Nrgghg, I feel another PowerShell project coming on ... enter PowerShell Eventing 0.5 Beta! With the magic of lightweight codegen, aka LCG, a smidgeon of reflection (well, quite a bit) and some inspiration, I managed to cough up this latest project.
While you cannot directly bind scriptblocks as eventhandlers, you can automatically route events in realtime to a background queue and deal with them in your time with a special Get-Event cmdlet. There is a sample walkthrough on the home page of the Wiki, and you can download a Sql backup script which shows progress reporting, all in script!
PS 1# Add-PSSnapin PSEventing PS 2# $wc = new-object system.net.webclient PS 3# get-eventbinding -IncludeUnboundEvents | ft -auto VariableName EventName TypeName Listening ------------ --------- -------- --------- wc Disposed WebClient False wc DownloadDataCompleted WebClient False wc DownloadFileCompleted WebClient False wc DownloadProgressChanged WebClient False wc DownloadStringCompleted WebClient False wc OpenReadCompleted WebClient False wc OpenWriteCompleted WebClient False wc UploadDataCompleted WebClient False wc UploadFileCompleted WebClient False wc UploadProgressChanged WebClient False wc UploadStringCompleted WebClient False wc UploadValuesCompleted WebClient False PS 4# Connect-EventListener wc disposed -verbose VERBOSE: Target is a WebClient VERBOSE: Now listening for 'disposed' events from $wc PS 5# $wc.Dispose() PS 6# get-event | ft -auto Occurred Source Name Args -------- ------ ---- ---- 5/13/2007 8:04:20 PM variable:wc Disposed System.EventArgs
Have fun!
Page rendered at Friday, September 05, 2008 9:35:52 PM (Eastern Standard Time, UTC-05:00)
Disclaimer The opinions expressed herein are my own personal opinions and do not represent my employer's view in any way.