PowerShell窗口阻止关机

时间:2012-04-16 12:28:53

标签: powershell windows-server-2003 shutdown

如果我在显示器上有PowerShell窗口(在PowerShell命令提示符下),它会阻止计算机关闭。

即。如果我打开PowerShell窗口,然后尝试关闭服务器,我会收到End Program弹出窗口,说Windows无法结束此程序。

如果我从开始菜单,cmd提示符和指定了-NoExit的快捷方式启动PowerShell,我会得到相同的结果。

如何以与CMD窗口相同的方式关闭自动关闭PowerShell窗口(如果它在PowerShell提示符下)?

或者,PowerShell是否可以检测何时启动关闭并因此自行关闭?

1 个答案:

答案 0 :(得分:2)

Server Fault回答了这个问题,所以这是我的解决方案测试代码:

Write-Host "PowerShellBlockingShutdown.ps1 Started"

$global:shuttingDown = $false
$sysevent = [microsoft.win32.systemevents]
Register-ObjectEvent -InputObject $sysevent -EventName "SessionEnding" -Action {$global:shuttingDown = $true; Write-Host "  SessionEnding"}
Register-ObjectEvent -InputObject $sysevent -EventName "SessionEnded"  -Action {$global:shuttingDown = $true; Write-Host "  SessionEnded"}

do {
    Start-Sleep -Seconds 3
    if ($global:shuttingDown) {break}
    Write-Host "  Waiting for Shutdown"
} while ($true)

Write-Host "PowerShellBlockingShutdown.ps1 Finished"

这似乎有用。