【发布时间】:2019-03-05 15:37:06
【问题描述】:
如果我使用
$service.stopservice()
由于依赖关系,我得到一个错误的方法,我需要做的是重新启动服务和它的所有依赖关系。
类似于如果使用 GUI 并且我选择了顶行服务并按下重新启动,首先我会收到一个警告,然后是将重新启动的其他服务的列表,然后在重新启动顶部之前停止每个依赖项一个,然后重新启动依赖项。
我需要在 powershell 中执行此操作
Try {
Write-host "Connecting to remote computer"
$service = Get-WmiObject -Class Win32_Service -ComputerName $ip -Credential $cred -Filter "Name='$servname'"
if ($service.Status -eq 'Running'){$ServiceStarted = $true}
if($ServiceStarted -eq $true) {
$StopResponse = $service.stopservice()
$StopReturnCode = Switch ($StopResponse.ReturnValue) {
0{ "The request was accepted" }
5{ "The service is already stopped" }
10{ "The service failed to stop - run the script again" }
default{ "Something unexpected happened" }
}
}
Write-Host $StopReturnCode
} catch {
Write-Host "script noped out bro" :fore RED
}
上述方法适用于单个服务(尽管速度很慢)。
我尝试使用 -Force 但这不起作用,并且 -Force -Confirm 给出错误。
【问题讨论】:
-
您不能在方法调用上使用开关。通过
Invoke-Command使用Restart-Servicecmdlet。 -
你是说我不能像上面写的那样使用开关吗?因为该脚本工作正常,所以在变量 $StopResponse 上使用了该开关,该变量从方法中获取返回数据。
-
我是说您不能将
-Force开关与您在原始问题中的方法调用 ($service.stopservice() -force) 一起使用。 -
啊,好吧,抱歉,您的意思是下面使用的开关,我删除了 -force,因为它没有帮助,因为代码块应该显示单个服务的工作方法。
标签: powershell wmi get-wmiobject