PowerShell作业是否有办法报告进度或在事件完成之前触发事件?我刚刚开始在PowerShell中执行后台作业,并且想知道我能在多大程度上推动这项功能。
答案 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)
您还可以在本地或远程作业中提升自己的自定义事件,并在本地会话中对其进行操作。