2

PowerShell ウィンドウ (PowerShell コマンド プロンプト) が表示されている場合、コンピューターをシャットダウンできません。

つまり、PowerShell ウィンドウを開いてからサーバーをシャットダウンしようとすると、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 に答える