Receive Job - PowerShell


Overview

Receive-Job is a PowerShell command used to retrieve the results of a background job that was previously created with Start-Job. It allows you to access the output, error messages, and status of the completed job. This command is essential for managing and monitoring long-running or asynchronous tasks in PowerShell.

Syntax

Receive-Job [-Credential <PSCredential>] -Job <JobName|JobQuery> [-IncludeException] [-Wait]

Options/Flags

  • -Credential (PSCredential): Specifies the credentials to use when connecting to the remote computer where the job is running. Required if the job is running on a remote computer.
  • -Job (JobName|JobQuery): Specifies the name of the job or a query to identify the job to receive the results for. Mandatory parameter.
  • -IncludeException: Includes job exceptions in the output. Default value: $false.
  • -Wait: Waits for the job to complete before returning the results. Default value: $false.

Examples

Example 1: Receive results from a completed job

$job = Start-Job {Write-Output "Job Output"}
Receive-Job -Job $job

Example 2: Receive results from a specific job using a query

Receive-Job -Job "JobName_*"

Example 3: Receive results and include job exceptions

Receive-Job -Job $job -IncludeException

Common Issues

  • Job not found: Ensure that the job name or query you specified is correct and the job has completed successfully.
  • Invalid credentials: If the job is running on a remote computer, make sure you provide valid credentials with the -Credential parameter.
  • Delayed results: If the -Wait parameter is not specified, the results might not be immediately available. Use Wait-Job to wait for the job to complete before receiving the results.

Integration

Receive-Job can be integrated with other PowerShell commands for more advanced tasks:

  • Get-Job: Use Get-Job to retrieve information about the status and properties of a job before receiving its results with Receive-Job.
  • Wait-Job: Use Wait-Job to block the PowerShell session until the job completes and then automatically receive its results.
  • Invoke-Command: Use Invoke-Command to run a command on a remote computer and start a job using -AsJob. You can then receive the results of the job on the local computer with Receive-Job.
  • Start-Job
  • Get-Job
  • Stop-Job
  • Wait-Job