PowerShell: Ausgabe von Receive-Job

Ich habe eine Sammlung von Jobs, die ausgeführt werden. Wenn sie fertig sind, verwende ich den Empfangsjob und er schreibt die Ausgabe auf den Bildschirm. Ich möchte diese Ausgabe in eine Datei schreiben. Ich möchte die Ausgabe, die während der Ausführung der Jobs erzeugt wird, nicht abschlagen, da bei mehreren Jobs, die gleichzeitig ausgeführt werden, die Protokollierung unterbrochen wird. Get-Job | Receive-Job druckt die Ausgabe übersichtlich aus.

Ich habe alles Folgende ausprobiert und es wird keine Ausgabe in die Datei geschrieben oder in einer Variablen gespeichert, sondern nur auf den Bildschirm:

#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)
}

BEARBEITEN: Ich habe die zusätzlichen Receive-Job-Aufrufe in foreach wie folgt entfernt, nachdem ich Keiths Kommentar gesehen habe:

# 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 
}

Ich habe auch festgestellt, dass ich Receive-Job an keiner anderen Stelle im Skript verwende. Das write-host $ temp und das out-file erzeugen jedoch immer noch keine Ausgabe.

Antworten auf die Frage(6)

Ihre Antwort auf die Frage