获取使用Register-ObjectEvent注册的Powershell作业的输出

时间:2012-09-05 20:11:41

标签: powershell

我有这个正在执行但不返回输出的脚本。

function code-Build-RepoWeb
{
     $job = Start-Job { code-Build-Component RepoWeb; Start-Sleep -seconds 5 }

     Register-ObjectEvent $job -EventName StateChanged `
    -SourceIdentifier JobStateChanged `
    -Action {$jobInfo = Receive-Job -Keep $Sender; Write-Host $jobInfo }
 }

我不是Powershell的专家,在提出问题之前先阅读一些文档。

由于

1 个答案:

答案 0 :(得分:4)

没有必要注册活动,以下是如何做到的:

 Start-Job { ... } | Wait-Job | Receive-Job -Keep

如果您需要非阻塞命令。这将创建一个全局变量来保存作业的结果:

$job = Start-Job { Start-Sleep -Seconds 5; 1..5 }

$null = Register-ObjectEvent $job -EventName StateChanged -SourceIdentifier JobEnd -Action {

    if($sender.State -eq 'Completed')
    {
        $global:jobInfo = Receive-Job $job        
    } 
}   

$jobInfo