In a previous tip you have seen how an endless loop can be used to continuously monitor things – until PowerShell is closed, or a user presses CTRL+C to abort the script. There is even a way for PowerShell to detect abortion. This way, you can control what happens when the script is aborted. Simply use a try…finally-block.
The example prints out a line of dots, and if you get bored enough to press CTRL+C, the script complains that you aborted it – just make sure you turned the volume up:
try { do { Write-Host '.' -NoNewline Start-Sleep -Milliseconds 800 } while ($true) } finally { $sapi = New-Object -ComObject Sapi.SpVoice $sapi.Speak('Hey, you aborted me dammit!') }
The exciting part is that the finally block will also execute when you close PowerShell.