远程事件转发

时间:2018-03-27 07:01:14

标签: powershell event-handling powershell-remoting custom-events

我正在使用PowerShell Remoting使用PSSession在我的远程计算机上执行作业。我需要定期收到有关远程工作的通知。我正在使用Register-EngineEventNew-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个事件的操作,因此我错过了远程作业的实时更新。

我能做些什么来满足我的期望吗?

0 个答案:

没有答案