Powershell: obtener salida de Receive-Job
Tengo una colección de trabajos que se están ejecutando. Cuando terminan, utilizo receive-job y escribe la salida en la pantalla. Me gustaría tomar esa salida y registrarla en un archivo. No quiero ajustar la salida producida mientras se ejecutan los trabajos, ya que si se ejecutan varios trabajos a la vez, se intercalará el registro. Get-Job | Receive-Job imprime la salida de una manera agradable organizada.
He intentado todo lo siguiente y no se escribe ninguna salida en el archivo ni se almacena en una variable, solo va a la pantalla:
#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)
}
EDITAR: He eliminado las llamadas adicionales de Receive-Job en el siguiente paso después de ver el comentario de 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
}
También verifiqué que no estoy utilizando Receive-Job en ninguna otra parte del script. Sin embargo, write-host $ temp y el archivo de salida aún no producen salida.