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