PowerShell作业进度监视

时间:2009-09-08 08:26:08

标签: powershell asynchronous background task

PowerShell作业是否有办法报告进度或在事件完成之前触发事件?我刚刚开始在PowerShell中执行后台作业,并且想知道我能在多大程度上推动这项功能。

2 个答案:

答案 0 :(得分:10)

标准的“手动”方式是使用Get-Job cmdlet。对于事件,当您使用Start-Job创建作业时,返回的Job对象上有一个“StateChanged”事件,您可以订阅它,例如:

$job = Start-Job { Get-Process; Start-Sleep -seconds 60 }
Register-ObjectEvent $job -EventName StateChanged `
    -SourceIdentifier JobStateChanged `
    -Action { Write-Host "Job $($Sender.Id) $($Sender.JobStateInfo)" }

答案 1 :(得分:2)

您还可以在本地或远程作业中提升自己的自定义事件,并在本地会话中对其进行操作。