我正在使用PowerShell Remoting使用PSSession在我的远程计算机上执行作业。我需要定期收到有关远程工作的通知。我正在使用Register-EngineEvent
和New-Event
cmdlet来实现此目的。
远程会话创建:
$s = New-PSSession -ComputerName server1
使用操作块注册引擎事件,以自动处理源ID为“MyEvent”的转发远程事件
Register-EngineEvent -SourceIdentifier MyEvent -Action {
Write-Host ("Got message from server1:"-f $event.messagedata)
}
考虑这个示例远程作业,它将使用具有相同sourceid的New-Event
cmdlet以一段时间间隔(2秒)引发自定义事件。
Invoke-Command -Session $s -ScriptBlock {
Register-EngineEvent -SourceIdentifier MyEvent -Forward
$count = 1
while ($count -le 10) {
Start-Sleep -Seconds 2
New-Event -SourceIdentifier MyEvent -Message 'Hai' | Out-Null
$count++
}
}
我的问题是eventjob(即动作块)仅在远程作业完成后才执行。我需要每2秒执行本地会话中的操作块,但是只有在远程作业完成后才会执行所有10个事件的操作,因此我错过了远程作业的实时更新。
我能做些什么来满足我的期望吗?