У меня есть набор заданий, которые выполняются. Когда они заканчиваются, я использую прием-работу и записываю вывод на экран. Я хотел бы взять этот вывод и записать его в файл. Я не хочу получать результаты, созданные во время выполнения заданий, потому что с несколькими заданиями, запущенными сразу, запись будет чередоваться. Get-Job | Receive-Job печатает результат в организованном порядке.
Я пробовал все следующие, и никакой вывод не записывается в файл или не сохраняется в переменной, он просто переходит на экран:
#Wait for last job to complete
While (Get-Job -State "Running") {
Log "Running..." -v $info
Start-Sleep 10
}
Log ("Jobs Completed. Output:") -v $info
# Getting the information back from the jobs
foreach($job in Get-Job){
Receive-Job -Job $job | Out-File c:\Test.log -Append
$output = Receive-Job -Job $job
Log ("OUTPUT: "+$output)
Receive-Job -Job $job -OutVariable $foo
Log ("FOO: "+$foo)
}
EDIT: Я удалил дополнительные вызовы Receive-Job в foreach следующим образом, увидев комментарий Keith:
# Getting the information back from the jobs
foreach($job in Get-Job){
Receive-Job -Job $job -OutVariable temp
Write-Host ("Temp: "+$temp)
$temp | Out-File -FilePath c:\Test.log -Append
}
Я также подтвердил, что не использую Receive-Job где-нибудь еще в script. Записи $temp write-host и out-file все равно не выдают результат.