2

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

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

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

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

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

4

1 回答 1

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"

这似乎有效。

于 2012-04-17T07:55:48.057 回答