防止关机的PowerShell窗口

防止关机的PowerShell窗口,powershell,windows-server-2003,shutdown,Powershell,Windows Server 2003,Shutdown,如果在屏幕上显示PowerShell窗口(在PowerShell命令提示符处),则会阻止计算机关闭 也就是说,如果我打开一个PowerShell窗口,然后尝试关闭服务器,我会得到结束程序弹出窗口,说Windows无法结束此程序 如果从“开始”菜单、cmd提示符和指定了-NoExit的快捷方式启动PowerShell,则会得到相同的结果 如何使关机自动关闭PowerShell窗口(如果在PowerShell提示符下),方法与CMD窗口相同 或者,PowerShell是否可以检测何时启动关机,从而自

如果在屏幕上显示PowerShell窗口(在PowerShell命令提示符处),则会阻止计算机关闭

也就是说,如果我打开一个PowerShell窗口,然后尝试关闭服务器,我会得到结束程序弹出窗口,说Windows无法结束此程序

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

如何使关机自动关闭PowerShell窗口(如果在PowerShell提示符下),方法与CMD窗口相同


或者,PowerShell是否可以检测何时启动关机,从而自行关闭?

此问题已在上得到回答,下面是我的解决方案测试代码:

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"
这似乎有效