2012-04-16 77 views
2

如果我在顯示器上有一個PowerShell窗口(在PowerShell命令提示符下),它可以防止計算機關閉。防止關機的PowerShell窗口

I.e.如果我打開一個PowerShell窗口,然後嘗試關閉服務器,我會看到結束程序彈出窗口說Windows不能結束這個程序。

如果我從開始菜單,cmd提示符以及指定-NoExit的快捷方式啓動PowerShell,我會得到相同的結果。

如何以與CMD窗口相同的方式關閉PowerShell窗口(如果它位於PowerShell提示符下)?

或者,PowerShell有可能檢測何時關閉已啓動並因此自動關閉?

回答

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" 

這似乎工作。