3

If I have a PowerShell window (at the PowerShell command prompt) on display it prevents the computer shutting down.

I.e. if I open a PowerShell window and then try to shutdown the server, I get the End Program popup saying Windows cannot end this program.

I get the same result if I start PowerShell from the start menu, from a cmd prompt and from a shortcut with -NoExit specified.

How can I get shutdown to automatically close a PowerShell window (if it is at the PowerShell prompt) in the same way as it would for a CMD window?

Alternatively, is it possible for PowerShell to detect when a shutdown has been initiated and therefore close itself?

Going down the alternative route as suggested by pk, I have come up with this test code:

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" 

Which seems to work.

1 Answer 1

3

I'm blatantly cut/pasting this answer from another site (since linking is frowned upon and I don't have a better answer). I do believe this will resolve your problem.

...it looks like you can set up a Event watcher using Register-ObjectEvent using [microsoft.win32.systemevents] and watching for either SessionEnding or SessionEnded. I haven't had time to test this out, but you could look at using something like this:

$sysevent = [microsoft.win32.systemevents] Register-ObjectEvent -InputObject $sysevent -EventName "SessionEnding" -Action {"Shutdown/Logoff detected.";Get-Process -Name Powershell | Stop-Process -Force} 

More information about this class can be found here: http://msdn.microsoft.com/en-us/library/microsoft.win32.systemevents_events.aspx

2
  • Cheers. I saw that and was wondering what it all meant :-) I'll have a play and get back to you Commented Apr 17, 2012 at 6:53
  • 1
    I've added my solution to the question Commented Apr 17, 2012 at 7:51

You must log in to answer this question.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.