我想使用 PowerShell 重新启动远程计算机上的服务。该服务既有显示名称,又有实例名称。我可以使用 Restart-Service cmdlet 来执行此操作吗?我没有看到实例名称参数,而且我似乎无法使“displayname$instancename”语法起作用。
此语法无效:
Invoke-Command -Session $session -ScriptBlock {Restart-Service -displayname 'DisplayName$InstanceName' -PassThru}
我起初以为问题出在 $ 字符上,但我发现这种语法确实有效:
Get-Service 'displayname$instancename'
答案1
尝试在第一个命令中切换到单引号。双引号正在执行变量替换。
答案2
我使用以下代码重新启动远程系统上的服务。-credentials
如果您没有权限,则可能需要添加标签。这非常好,因为它也适用于 Server 2003/Windows XP 机器。
$Service = "InstanceNameOfService"
$Computer = "MyComputer"
$varService = Get-WmiObject -computername $Computer -class win32_service | Where-Object { $_.Name -eq $Service }
$varService.restartservice()