Obtient les résultats des tâches en arrière-plan de Windows PowerShell dans la session active.

Syntaxe

Receive-Job [-Job] <Job[]> [[-ComputerName] <string[]>] [-Keep] [-NoRecurse] [<CommonParameters>]

Receive-Job [[-InstanceId] <Guid[]>] [-Keep] [-NoRecurse] [<CommonParameters>]

Receive-Job [-Job] <Job[]> [[-Location] <string[]>] [-Keep] [-NoRecurse] [<CommonParameters>]

Receive-Job [[-Name] <string[]>] [-Keep] [-NoRecurse] [<CommonParameters>]

Receive-Job [-Job] <Job[]> [[-Session] <PSSession[]>] [-Keep] [-NoRecurse] [<CommonParameters>]

Receive-Job [-Id] <Int32[]> [-Keep] [-NoRecurse] [<CommonParameters>]

Description

L'applet de commande Receive-Job obtient les résultats des tâches en arrière-plan de Windows PowerShell. Utilisez Receive-Job pour obtenir les résultats des tâches démarrées à l'aide de l'applet de commande Start-Job ou du paramètre AsJob de n'importe quelle applet de commande. Vous pouvez obtenir les résultats de toutes les tâches ou identifier des tâches par leur nom, ID, ID d'instance, nom d'ordinateur, emplacement ou session, ou bien en envoyant un objet de traitement.

Lorsque vous démarrez une tâche en arrière-plan Windows PowerShell, la tâche démarre, mais les résultats n'apparaissent pas immédiatement. À la place, la commande retourne un objet qui représente la tâche en arrière-plan. L'objet de traitement contient des informations utiles sur la tâche, mais ne contient pas les résultats. Cette méthode vous permet de continuer à travailler dans la session pendant que la tâche s'exécute. Pour plus d'informations sur les tâches en arrière-plan dans Windows PowerShell, consultez about_Jobs.

Pour obtenir les résultats de la commande, utilisez l'applet de commande Receive-Job. Receive-Job obtient les résultats générés au moment où la commande Receive-Job a été envoyée. Si les résultats ne sont pas encore complets, vous pouvez exécuter des commandes Receive-Job supplémentaires pour obtenir les résultats restants.

Par défaut, les résultats de tâche sont supprimés du système lorsque vous les recevez, mais vous pouvez utiliser le paramètre Keep pour enregistrer les résultats afin de pouvoir les recevoir à nouveau. Pour supprimer les résultats de tâche, recevez-les à nouveau (sans le paramètre Keep), fermez la session ou utilisez l'applet de commande Remove-Job pour supprimer la tâche de la session.

Paramètres

-ComputerName <string[]>

Obtient les résultats des tâches exécutées sur les ordinateurs spécifiés. Entrez les noms d'ordinateurs. La valeur par défaut est toutes les tâches dans la session active.

Ce paramètre effectue une sélection parmi les résultats des tâches qui sont stockés sur l'ordinateur local. Il n'obtient pas de données des ordinateurs distants. Pour obtenir les résultats des tâches stockés sur des ordinateurs distants, utilisez l'applet de commande Invoke-Command pour exécuter une commande Receive-Job à distance.

Obligatoire ?

false

Position ?

2

Valeur par défaut

Accepter l'entrée de pipeline ?

true (ByPropertyName)

Accepter les caractères génériques ?

false

-Id <Int32[]>

Obtient les résultats des tâches avec les ID spécifiés. La valeur par défaut est toutes les tâches dans la session active.

L'ID est un entier qui identifie de manière unique la tâche dans la session active. Il est plus facile à mémoriser et à taper que l'ID d'instance, mais est unique seulement dans la session active. Vous pouvez taper un ou plusieurs ID (séparés par des virgules). Pour rechercher l'ID d'une tâche, tapez « Get-Job » sans paramètres.

Obligatoire ?

true

Position ?

1

Valeur par défaut

Accepter l'entrée de pipeline ?

true (ByPropertyName)

Accepter les caractères génériques ?

false

-InstanceId <Guid[]>

Obtient les résultats des tâches avec les ID d'instance spécifiés. La valeur par défaut est toutes les tâches dans la session active.

Un ID d'instance est un GUID qui identifie de manière unique la tâche sur l'ordinateur. Pour rechercher l'ID d'instance d'une tâche, utilisez l'applet de commande Get-Job.

Obligatoire ?

false

Position ?

1

Valeur par défaut

Accepter l'entrée de pipeline ?

true (ByPropertyName)

Accepter les caractères génériques ?

false

-Job <Job[]>

Spécifie la tâche pour laquelle les résultats sont récupérés. Ce paramètre est obligatoire dans une commande Receive-Job. Entrez une variable qui contient la tâche ou une commande qui obtient la tâche. Vous pouvez également diriger un objet de traitement vers Receive-Job.

Obligatoire ?

true

Position ?

1

Valeur par défaut

Accepter l'entrée de pipeline ?

true (ByValue, ByPropertyName)

Accepter les caractères génériques ?

false

-Keep

Enregistre les résultats de la tâche dans le système, même après les avoir reçus. Par défaut, les résultats de la tâche sont supprimés lorsqu'ils sont récupérés.

Pour supprimer les résultats, utilisez Receive-Job pour les recevoir à nouveau sans le paramètre Keep, fermez la session ou utilisez l'applet de commande Remove-Job pour supprimer la tâche de la session.

Obligatoire ?

false

Position ?

named

Valeur par défaut

Accepter l'entrée de pipeline ?

false

Accepter les caractères génériques ?

false

-Location <string[]>

Obtient uniquement les résultats des tâches avec l'emplacement spécifié. La valeur par défaut est toutes les tâches dans la session active.

Obligatoire ?

false

Position ?

2

Valeur par défaut

Accepter l'entrée de pipeline ?

true (ByPropertyName)

Accepter les caractères génériques ?

false

-Name <string[]>

Obtient les résultats des tâches avec le nom convivial spécifié. La valeur par défaut est toutes les tâches dans la session active.

Obligatoire ?

false

Position ?

1

Valeur par défaut

Accepter l'entrée de pipeline ?

true (ByPropertyName)

Accepter les caractères génériques ?

false

-NoRecurse

Obtient les résultats de la tâche spécifiée uniquement. Par défaut, Receive-Job obtient également les résultats de toutes les tâches enfants de la tâche spécifiée.

Obligatoire ?

false

Position ?

named

Valeur par défaut

Accepter l'entrée de pipeline ?

false

Accepter les caractères génériques ?

false

-Session <PSSession[]>

Obtient les résultats des tâches exécutées dans la session Windows PowerShell (PSSession) spécifiée. Entrez une variable qui contient la session PSSession ou une commande qui obtient la session PSSession, telle qu'une commande Get-PSSession. La valeur par défaut est toutes les tâches dans la session active.

Obligatoire ?

false

Position ?

2

Valeur par défaut

Accepter l'entrée de pipeline ?

true (ByPropertyName)

Accepter les caractères génériques ?

false

<CommonParameters>

Cette applet de commande prend en charge les paramètres courants : -Verbose, -Debug, -ErrorAction, -ErrorVariable, -OutBuffer et -OutVariable. Pour plus d'informations, consultez about_Commonparameters.

Entrées et sorties

Le type d'entrée est le type des objets que vous pouvez diriger vers l'applet de commande. Le type de retour est le type des objets que l'applet de commande retourne.

Entrées

System.Management.Automation.Job

Vous pouvez diriger des objets de traitement vers Receive-Job.

Sorties

PSObject

Receive-Job retourne les résultats des commandes de la tâche.

Exemple 1

C:\PS>$job = start-job -scriptblock {get-process}

C:\PS> receive-job -job $job

Description
-----------
Ces commandes utilisent le paramètre Job pour obtenir les résultats d'une tâche particulière. La première commande utilise l'applet de commande Start-Job pour démarrer une tâche qui exécute une commande « Get-Process ». Elle utilise l'opérateur d'affectation (=) pour enregistrer l'objet de traitement résultant dans la variable $job.

La deuxième commande utilise l'applet de commande Receive-Job pour obtenir les résultats de la tâche. Elle utilise le paramètre Job pour spécifier la tâche.






Exemple 2

C:\PS>$job = start-job -scriptblock {get-process}

C:\PS> $job | receive-job

Description
-----------
Cet exemple est le même que l'Exemple 2, sauf que la commande utilise un opérateur de pipeline (|) pour envoyer l'objet de traitement à Receive-Job. En conséquence, la commande n'a pas besoin d'un paramètre Job pour spécifier la tâche.






Exemple 3

C:\PS>$j = invoke-command -computername Server01, Server02, Server03 -scriptblock {get-service} -AsJob

C:\PS> $j.childjobs

Id   Name     State      HasMoreData   Location       Command
--   ----     -----      -----------   --------       -------
2    Job2     Completed  True          Server01       get-service
3    Job3     Completed  True          Server02       get-service
4    Job4     Completed  True          Server03       get-service

C:\PS> receive-job -name Job3  -keep

Status  Name        DisplayName                        PSComputerName
------  ----------- -----------                        --------------
Running AeLookupSvc Application Experience             Server02
Stopped ALG         Application Layer Gateway Service  Server02
Running Appinfo     Application Information            Server02
Running AppMgmt     Application Management             Server02

Description
-----------
Ces commandes utilisent le paramètre Name de Receive-Job pour obtenir les résultats d'une des tâches en arrière-plan exécutées sur des ordinateurs distants. 

La première commande utilise l'applet de commande Invoke-Command pour démarrer une tâche en arrière-plan qui exécute une commande Get-Service sur trois ordinateurs distants. Elle utilise le paramètre AsJob pour exécuter la commande en tant que tâche en arrière-plan. Elle enregistre l'objet de traitement résultant dans la variable $j.

Lorsque vous utilisez le paramètre AsJob de Invoke-Command pour démarrer une tâche, l'objet de traitement est créé sur l'ordinateur local, alors que la tâche s'exécute sur les ordinateurs distants. En conséquence, vous utilisez des commandes locales pour gérer la tâche.

Également, lorsque vous utilisez AsJob, Windows PowerShell retourne un objet de traitement qui contient une tâche enfant pour chaque tâche démarrée. Dans ce cas, l'objet de traitement contient trois tâches enfants : une pour chaque tâche sur chaque ordinateur distant.

La deuxième commande utilise la méthode de point pour afficher la valeur de la propriété ChildJobs de l'objet de traitement dans $j. L'affichage montre que la commande a créé trois tâches enfants : une pour la tâche sur chaque ordinateur distant.
 
La troisième commande utilise l'applet de commande Receive-Job pour obtenir les résultats de la tâche enfant Job3 qui s'est exécutée sur l'ordinateur Server02. Elle utilise le paramètre Name pour spécifier le nom de la tâche enfant et le paramètre Keep pour enregistrer les résultats de la tâche même après qu'ils ont été reçus.






Exemple 4

C:\PS>$s = new-pssession -computername Server01, Server02, Server03

C:\PS> $j = invoke-command -session $s -scriptblock {start-job -scriptblock {get-eventlog -logname system}}

C:\PS> $j

Id   Name     State      HasMoreData   Location   Command
--   ----     -----      -----------   --------   -------
1    Job1     Completed  True          Localhost  get-eventlog system
2    Job2     Completed  True          Localhost  get-eventlog system
3    Job3     Completed  True          Localhost  get-eventlog system

C:\PS> $results = invoke-command -session $s -scriptblock {param($j) receive-job -job $j} -ArgumentList $j

Description
-----------
Cet exemple montre comment obtenir les résultats des tâches en arrière-plan exécutées sur trois ordinateurs distants.

La première commande utilise l'applet de commande New-PSSession pour créer trois sessions PSSession : une sur chacun des serveurs spécifiés dans la commande. Elle enregistre les sessions PSSession dans la variable $s.

La deuxième commande utilise l'applet de commande Invoke-Command pour exécuter une commande Start-Job dans chacune des sessions PSSession dans la variable $s. La tâche exécute une commande Get-Eventlog qui obtient les événements dans le journal System. La commande enregistre les résultats dans la variable $j.

Étant donné que la commande a utilisé Invoke-Command pour exécuter la commande Start-Job, elle a démarré trois tâches indépendantes sur chacun des trois ordinateurs. En conséquence, la commande a retourné trois objets de traitement qui représentent trois tâches exécutées localement sur trois ordinateurs différents.


La troisième commande affiche les trois objets de traitement dans $j.  

La quatrième commande utilise Invoke-Command pour exécuter une commande Receive-Job dans chacune des sessions PSSession stockées dans $s et enregistrer les résultats dans la variable $results.

Parce que $j est une variable locale, le bloc de script utilise le mot clé « param » pour déclarer les variables dans la commande et le paramètre ArgumentList pour fournir la valeur de $j.






Voir aussi




Table des matières