EventSources/@Process.ps1
<# .Synopsis Watches a process. .Description Watches a process. If -Exit is passed, watches for process exit. If -Output is passed, watches for process output If -Error is passed, watched for process error #> param( # The process identifier [Parameter(Mandatory,ValueFromPipelineByPropertyName)] [Alias('ID')] [int] $ProcessID, # If set, will watch for process exit. This is the default unless -StandardError or -StandardOutput are passed. [switch] $Exit, # If set, will watch for new standard output. [switch] $StandardOutput, # If set, will watch for new standard erorr. [switch] $StandardError ) process { $eventNames = @( if ($Exit) { "Exited" } if ($StandardOutput) { "OutputDataReceived" } if ($StandardError) { "ErrorDataReceived" } ) if ($eventNames) { Get-Process -Id $ProcessID | Add-Member EventName $eventNames -Force -PassThru } else { Get-Process -Id $ProcessID | Add-Member EventName "Exited" -Force -PassThru } } |