将PowerShell Restart-Service cmdlet与具有实例名称的服务一起使用

我想使用PowerShell重新启动远程机器上的服务。 该服务具有显示名称和实例名称。 我可以使用Restart-Service cmdlet来执行此操作吗? 我没有看到一个instancename参数,我似乎无法使“displayname $ instancename”的语法工作。

这个语法不起作用:

Invoke-Command -Session $session -ScriptBlock {Restart-Service -displayname 'DisplayName$InstanceName' -PassThru} 

我首先想到的问题是$字符,但是我发现这个语法是可行的:

 Get-Service 'displayname$instancename' 

尝试在第一个命令中切换到单引号。 双引号正在执行variablesreplace。

我使用以下代码在远程系统上重新启动服务。 如果您没有权限,则可能需要添加-credentials标记。 这是非常好的,因为它也可以在Server 2003 / Windows XP上运行。

 $Service = "InstanceNameOfService" $Computer = "MyComputer" $varService = Get-WmiObject -computername $Computer -class win32_service | Where-Object { $_.Name -eq $Service } $varService.restartservice()