未显示的服务可以正常关闭

时间:2018-05-08 11:06:21

标签: powershell

我遇到一个问题,即服务没有正确显示其“可以关闭”状态。简单的代码示例:

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已停止或正在运行。

1 个答案:

答案 0 :(得分:1)

问题是由于CanShutDown并不能达到预期目的。

作为per the documentation

  

ServiceController.CanShutdown

     

获取一个指示是否的值   系统关闭时应通知服务。

不需要告知位即将发生系统关闭。其他服务,比如Sql server do。