我遇到一个问题,即服务没有正确显示其“可以关闭”状态。简单的代码示例:
for ($counter = 0; $counter -le 5; $counter++) {
if ((Get-Service -Name BITS).CanShutDown) {
Write-Output "BITS can shutdown.."
break
}
else {
Write-Output "Waiting for service shutdown status.. $counter"
Start-Sleep -Seconds 30
}
}
输出:
Waiting for service shutdown status.. 0
Waiting for service shutdown status.. 1
Waiting for service shutdown status.. 2
Waiting for service shutdown status.. 3
Waiting for service shutdown status.. 4
Waiting for service shutdown status.. 5
如果我打开一个控制台,并在脚本运行时使用Start-Service -Name BITS
,则循环不会结束。
为什么CanShutDown
总是返回False?即使BITS已停止或正在运行。
答案 0 :(得分:1)
问题是由于CanShutDown
并不能达到预期目的。
ServiceController.CanShutdown
获取一个指示是否的值 系统关闭时应通知服务。
不需要告知位即将发生系统关闭。其他服务,比如Sql server do。