title: Powershell: get output from Receive-Job
body: <p>I have a collection of jobs that are running. When they complete I use receive-job and it writes the output to the screen. I'd like to take that output and log it to a file. I don't want to tee the output produced while the jobs are running because with multiple jobs running at once the logging would be interspersed. Get-Job | Receive-Job prints the output in a nice organized manner.</p>
  
  <p>I have tried all of the following and no output is written to the file or stored in a variable, it just goes to the screen:</p>
  
  <pre><code>#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)
  }
  </code></pre>
  
  <p>EDIT:
  I have removed the extra Receive-Job calls in the foreach to the following after seeing Keith's comment:</p>
  
  <pre><code># 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 
  }
  </code></pre>
  
  <p>I also verified I'm not using Receive-Job anywhere else in the script. The write-host $temp and the out-file still produce no output though.</p>