Wait-Job
Attend que l’un ou l’ensemble des travaux PowerShell en cours d’exécution dans la session soient à l’état de fin.
Syntaxe
SessionIdParameterSet (Par défaut)
Wait-Job
[-Id] <Int32[]>
[-Any]
[-Timeout <Int32>]
[-Force]
[<CommonParameters>]
JobParameterSet
Wait-Job
[-Job] <Job[]>
[-Any]
[-Timeout <Int32>]
[-Force]
[<CommonParameters>]
NameParameterSet
Wait-Job
[-Name] <String[]>
[-Any]
[-Timeout <Int32>]
[-Force]
[<CommonParameters>]
InstanceIdParameterSet
Wait-Job
[-InstanceId] <Guid[]>
[-Any]
[-Timeout <Int32>]
[-Force]
[<CommonParameters>]
StateParameterSet
Wait-Job
[-State] <JobState>
[-Any]
[-Timeout <Int32>]
[-Force]
[<CommonParameters>]
FilterParameterSet
Wait-Job
[-Filter] <Hashtable>
[-Any]
[-Timeout <Int32>]
[-Force]
[<CommonParameters>]
Description
L’applet Wait-Job de commande attend qu’un travail soit dans un état de fin avant de poursuivre l’exécution.
Les états de fin sont les suivants :
- Terminé
- Échec
- Arrêté
- Suspendu
- Déconnecté
Vous pouvez attendre qu’un travail spécifié, ou que tous les travaux soient dans un état de fin. Vous pouvez également définir un délai d’attente maximal pour le travail à l’aide du paramètre Timeout , ou utiliser le paramètre Force pour attendre un travail dans les Suspended états ou Disconnected les états.
Lorsque les commandes du travail sont terminées, Wait-Job retourne un objet de travail et poursuit l’exécution.
Vous pouvez utiliser l’applet Wait-Job de commande pour attendre les travaux démarrés à l’aide de l’applet Start-Job de commande ou du paramètre AsJob de l’applet Invoke-Command de commande. Pour plus d’informations sur les travaux, consultez about_Jobs.
À partir de Windows PowerShell 3.0, l’applet de commande Wait-Job attend également les types de travaux personnalisés, tels que les travaux de flux de travail et les instances de travaux planifiés. Pour permettre Wait-Job d’attendre les travaux d’un type particulier, importez le module qui prend en charge le type de travail personnalisé dans la session avant d’exécuter l’applet Get-Job de commande, soit à l’aide de l’applet Import-Module de commande, soit en utilisant ou en obtenant une applet de commande dans le module. Pour plus d’informations sur un type de travail personnalisé particulier, consultez la documentation de la fonctionnalité de type de travail personnalisé.
Exemples
Exemple 1 : Attendre tous les travaux
Get-Job | Wait-Job
Cette commande attend que tous les travaux en cours d’exécution dans la session se terminent.
Exemple 2 : Attendre que les travaux démarrent sur des ordinateurs distants à l’aide de Start-Job
$s = New-PSSession Server01, Server02, Server03
Invoke-Command -Session $s -ScriptBlock {Start-Job -Name Date1 -ScriptBlock {Get-Date}}
$done = Invoke-Command -Session $s -Command {Wait-Job -Name Date1}
$done.Count
3
Cet exemple montre comment utiliser l’applet Wait-Job de commande avec des travaux démarrés sur des ordinateurs distants à l’aide de l’applet de Start-Job commande. Les commandes et Wait-Job les Start-Job commandes sont envoyées à l’ordinateur distant à l’aide de l’applet de Invoke-Command commande.
Cet exemple utilise Wait-Job pour déterminer si une Get-Date commande s’exécutant en tant que travail sur trois ordinateurs différents est terminée.
La première commande crée une session PowerShell Windows (PSSession) sur chacun des trois ordinateurs distants et les stocke dans la variable $s.
La deuxième commande utilise Invoke-Command pour s’exécuter Start-Job dans chacune des trois sessions en $s.
Tous les travaux sont nommés Date1.
La troisième commande utilise Invoke-Command pour exécuter Wait-Job. Cette commande attend que les Date1 travaux sur chaque ordinateur se terminent. Il stocke la collection résultante (tableau) d’objets de travail dans la $done variable.
La quatrième commande utilise la propriété Count du tableau d’objets de travail dans la $done variable pour déterminer le nombre de travaux terminés.
Exemple 3 : Déterminer quand le premier travail se termine
$s = New-PSSession -ComputerName (Get-Content -Path .\Machines.txt)
$c = 'Get-EventLog -LogName System | Where-Object {$PSItem.EntryType -eq "error" --and $PSItem.Source -eq "LSASRV"} | Out-File -FilePath Errors.txt'
Invoke-Command -Session $s -ScriptBlock {Start-Job -ScriptBlock {$Using:c}
Invoke-Command -Session $s -ScriptBlock {Wait-Job -Any}
Cet exemple utilise le paramètre Any de Wait-Job déterminer quand le premier de nombreux travaux en cours d’exécution dans la session active est dans un état de fin. Il montre également comment utiliser l’applet Wait-Job de commande pour attendre que les travaux distants se terminent.
La première commande crée une session PSSession sur chacun des ordinateurs répertoriés dans le fichier Machines.txt et stocke les objets PSSession dans la $s variable. La commande utilise l’applet Get-Content de commande pour obtenir le contenu du fichier. La commande Get-Content est placée entre parenthèses pour vous assurer qu’elle s’exécute avant la commande New-PSSession.
La deuxième commande stocke une Get-EventLog chaîne de commande, entre guillemets, dans la $c variable.
La troisième commande utilise Invoke-Command l’applet de commande pour s’exécuter Start-Job dans chacune des sessions dans $s.
La Start-Job commande démarre un travail qui exécute la Get-EventLog commande dans la $c variable.
La commande utilise le modificateur d’étendue Using: pour indiquer que la $c variable a été définie sur l’ordinateur local. Le modificateur d’étendue Using: est introduit dans Windows PowerShell 3.0. Pour plus d’informations sur le modificateur d’étendue Using: , consultez about_Remote_Variables.
La quatrième commande utilise Invoke-Command pour exécuter une Wait-Job commande dans les sessions. Il utilise le paramètre Any pour attendre la fin de la première tâche sur les ordinateurs distants.
Exemple 4 : Définir un temps d’attente pour les travaux sur des ordinateurs distants
PS> $s = New-PSSession -ComputerName Server01, Server02, Server03
PS> $jobs = Invoke-Command -Session $s -ScriptBlock {Start-Job -ScriptBlock {Get-Date}}
PS> $done = Invoke-Command -Session $s -ScriptBlock {Wait-Job -Timeout 30}
PS>
Cet exemple montre comment utiliser le paramètre Timeout de Wait-Job façon à définir un délai d’attente maximal pour les travaux exécutés sur des ordinateurs distants.
La première commande crée une session PSSession sur chacun des trois ordinateurs distants (Server01, Server02 et Server03), puis stocke les objets PSSession dans la $s variable.
La deuxième commande utilise Invoke-Command pour s’exécuter Start-Job dans chacun des objets PSSession dans $s. Il stocke les objets de travail résultants dans la $jobs variable.
La troisième commande utilise Invoke-Command pour s’exécuter Wait-Job dans chacune des sessions dans $s. La Wait-Job commande détermine si toutes les commandes ont été effectuées dans les 30 secondes. Il utilise le paramètre Timeout avec la valeur 30 pour établir le délai d’attente maximal, puis stocke les résultats de la commande dans la $done variable.
Dans ce cas, après 30 secondes, seule la commande sur l’ordinateur Server02 est terminée.
Wait-Job termine l’attente, retourne l’objet qui représente le travail qui a été terminé et affiche l’invite de commandes.
La $done variable contient un objet de travail qui représente le travail exécuté sur Server02.
Exemple 5 : Patientez jusqu’à la fin de l’un de plusieurs travaux
Wait-Job -Id 1,2,5 -Any
Cette commande identifie trois travaux par leurs ID et attend que l’un d’eux soit dans un état de fin. L’exécution se poursuit lorsque le premier travail se termine.
Exemple 6 : Attendre une période, puis autoriser le travail à continuer en arrière-plan
Wait-Job -Name "DailyLog" -Timeout 120
Cette commande attend 120 secondes (deux minutes) pour que la tâche DailyLog se termine. Si le travail ne se termine pas au cours des deux prochaines minutes, l’exécution se poursuit et le travail continue à s’exécuter en arrière-plan.
Exemple 7 : Attendre un travail par nom
Wait-Job -Name "Job3"
Cette commande utilise le nom du travail pour identifier le travail pour lequel attendre.
Exemple 8 : Attendre les travaux sur l’ordinateur local démarré avec Start-Job
$j = Start-Job -ScriptBlock {Get-ChildItem -Filter *.ps1| Where-Object {$PSItem.LastWriteTime -gt ((Get-Date) - (New-TimeSpan -Days 7))}}
$j | Wait-Job
Cet exemple montre comment utiliser l’applet Wait-Job de commande avec les travaux démarrés sur l’ordinateur local à l’aide Start-Jobde .
Ces commandes démarrent un travail qui obtient les fichiers de script PowerShell Windows qui ont été ajoutés ou mis à jour la semaine dernière.
La première commande utilise Start-Job pour démarrer un travail sur l’ordinateur local. Le travail exécute une Get-ChildItem commande qui obtient tous les fichiers qui ont une .ps1 extension de nom de fichier qui ont été ajoutés ou mis à jour la semaine dernière.
La troisième commande utilise Wait-Job pour attendre que le travail soit dans un état de fin. Une fois le travail terminé, la commande affiche l’objet de travail, qui contient des informations sur le travail.
Exemple 9 : Attendre que les travaux démarrent sur des ordinateurs distants à l’aide de Invoke-Command
$s = New-PSSession -ComputerName Server01, Server02, Server03
$j = Invoke-Command -Session $s -ScriptBlock {Get-Process} -AsJob
$j | Wait-Job
Cet exemple montre comment utiliser Wait-Job des travaux démarrés sur des ordinateurs distants à l’aide du paramètre AsJob de Invoke-Command. Lorsque vous utilisez AsJob, le travail est créé sur l’ordinateur local et les résultats sont automatiquement retournés à l’ordinateur local, même si le travail s’exécute sur les ordinateurs distants.
Cet exemple utilise Wait-Job pour déterminer si une Get-Process commande s’exécutant dans les sessions sur trois ordinateurs distants est dans un état de fin.
La première commande crée des objets PSSession sur trois ordinateurs et les stocke dans la $s variable.
La deuxième commande utilise Invoke-Command pour s’exécuter Get-Process dans chacune des trois sessions en $s.
La commande utilise le paramètre AsJob pour exécuter la commande de manière asynchrone en tant que travail. La commande retourne un objet de travail, tout comme les travaux démarrés à l’aide Start-Jobde , et l’objet de travail est stocké dans la $j variable.
La troisième commande utilise un opérateur de pipeline (|) pour envoyer l’objet de travail à $j l’applet Wait-Job de commande. Une Invoke-Command commande n’est pas nécessaire dans ce cas, car le travail réside sur l’ordinateur local.
Exemple 10 : Attendre un travail qui a un ID
Get-Job
Id Name State HasMoreData Location Command
-- ---- ----- ----------- -------- -------
1 Job1 Completed True localhost,Server01.. Get-Service
4 Job4 Completed True localhost dir | where
Wait-Job -Id 1
Cette commande attend la tâche avec une valeur d’ID de 1.
Paramètres
-Any
Indique que cette applet de commande retourne l’objet de travail et continue l’exécution à la fin d’un travail. Par défaut, Wait-Job attend que tous les travaux spécifiés soient terminés avant d’afficher l’invite.
Propriétés du paramètre
| Type: | SwitchParameter |
| Valeur par défaut: | None |
| Prend en charge les caractères génériques: | False |
| DontShow: | False |
Jeux de paramètres
(All)
| Position: | Named |
| Obligatoire: | False |
| Valeur du pipeline: | False |
| Valeur du pipeline par nom de propriété: | False |
| Valeur des arguments restants: | False |
-Filter
Spécifie une table de conditions de hachage. Cette applet de commande attend les travaux qui répondent à toutes les conditions de la table de hachage. Entrez une table de hachage où les clés sont des propriétés de travail et les valeurs sont des valeurs de propriété de travail.
Ce paramètre fonctionne uniquement sur les types de travaux personnalisés, tels que les travaux de flux de travail et les travaux planifiés. Elle ne fonctionne pas sur des travaux standard, tels que ceux créés à l’aide de l’applet de Start-Job commande. Pour plus d’informations sur la prise en charge de ce paramètre, consultez la rubrique d’aide pour le type de travail.
Ce paramètre a été introduit dans Windows PowerShell 3.0.
Propriétés du paramètre
| Type: | Hashtable |
| Valeur par défaut: | None |
| Prend en charge les caractères génériques: | False |
| DontShow: | False |
Jeux de paramètres
FilterParameterSet
| Position: | 0 |
| Obligatoire: | True |
| Valeur du pipeline: | False |
| Valeur du pipeline par nom de propriété: | True |
| Valeur des arguments restants: | False |
-Force
Indique que cette applet de commande continue d’attendre les travaux dans l’état Suspendu ou Déconnecté. Par défaut, Wait-Job retourne ou termine l’attente, lorsque les travaux se trouvent dans l’un des états suivants :
- Terminé
- Échec
- Arrêté
- Suspendu
- Déconnecté
Ce paramètre a été introduit dans Windows PowerShell 3.0.
Propriétés du paramètre
| Type: | SwitchParameter |
| Valeur par défaut: | None |
| Prend en charge les caractères génériques: | False |
| DontShow: | False |
Jeux de paramètres
(All)
| Position: | Named |
| Obligatoire: | False |
| Valeur du pipeline: | False |
| Valeur du pipeline par nom de propriété: | False |
| Valeur des arguments restants: | False |
-Id
Spécifie un tableau d’ID de travaux pour lesquels cette applet de commande attend.
L’ID est un entier qui identifie de façon unique le travail dans la session active. Il est plus facile de mémoriser et de taper que l’ID d’instance, mais il est unique uniquement dans la session active. Vous pouvez taper un ou plusieurs ID, séparés par des virgules. Pour rechercher l’ID d’un travail, tapez Get-Job.
Propriétés du paramètre
| Type: | Int32[] |
| Valeur par défaut: | None |
| Prend en charge les caractères génériques: | False |
| DontShow: | False |
Jeux de paramètres
SessionIdParameterSet
| Position: | 0 |
| Obligatoire: | True |
| Valeur du pipeline: | False |
| Valeur du pipeline par nom de propriété: | True |
| Valeur des arguments restants: | False |
-InstanceId
Spécifie un tableau d’ID d’instance de travaux pour lesquels cette applet de commande attend. La valeur par défaut est tous les travaux.
Un ID d’instance est un GUID qui identifie de façon unique le travail sur l’ordinateur. Pour rechercher l’ID d’instance d’un travail, utilisez Get-Job.
Propriétés du paramètre
| Type: | Guid[] |
| Valeur par défaut: | None |
| Prend en charge les caractères génériques: | False |
| DontShow: | False |
Jeux de paramètres
InstanceIdParameterSet
| Position: | 0 |
| Obligatoire: | True |
| Valeur du pipeline: | False |
| Valeur du pipeline par nom de propriété: | True |
| Valeur des arguments restants: | False |
-Job
Spécifie les travaux pour lesquels cette applet de commande attend. Entrez une variable qui contient les objets de travail ou une commande qui obtient les objets de travail. Vous pouvez également utiliser un opérateur de pipeline pour envoyer des objets de travail à l’applet de Wait-Job commande. Par défaut, Wait-Job attend tous les travaux créés dans la session active.
Propriétés du paramètre
| Type: | Job[] |
| Valeur par défaut: | None |
| Prend en charge les caractères génériques: | False |
| DontShow: | False |
Jeux de paramètres
JobParameterSet
| Position: | 0 |
| Obligatoire: | True |
| Valeur du pipeline: | True |
| Valeur du pipeline par nom de propriété: | True |
| Valeur des arguments restants: | False |
-Name
Spécifie les noms conviviaux des travaux pour lesquels cette applet de commande attend.
Propriétés du paramètre
| Type: | String[] |
| Valeur par défaut: | None |
| Prend en charge les caractères génériques: | False |
| DontShow: | False |
Jeux de paramètres
NameParameterSet
| Position: | 0 |
| Obligatoire: | True |
| Valeur du pipeline: | False |
| Valeur du pipeline par nom de propriété: | True |
| Valeur des arguments restants: | False |
-State
Spécifie un état de travail. Cette applet de commande attend uniquement les travaux dans l’état spécifié. Les valeurs acceptables pour ce paramètre sont les suivantes :
- NotStarted
- Course à pied
- Terminé
- Échec
- Arrêté
- Bloqué
- Suspendu
- Déconnecté
- Suspension en cours
- Arrêt
Pour plus d’informations sur les états de travail, consultez Énumération JobState.
Propriétés du paramètre
| Type: | JobState |
| Valeur par défaut: | None |
| Valeurs acceptées: | NotStarted, Running, Completed, Failed, Stopped, Blocked, Suspended, Disconnected, Suspending, Stopping, AtBreakpoint |
| Prend en charge les caractères génériques: | False |
| DontShow: | False |
Jeux de paramètres
StateParameterSet
| Position: | 0 |
| Obligatoire: | True |
| Valeur du pipeline: | False |
| Valeur du pipeline par nom de propriété: | True |
| Valeur des arguments restants: | False |
-Timeout
Spécifie le temps d’attente maximal pour chaque travail, en secondes. La valeur par défaut, -1, indique que l’applet de commande attend la fin du travail. Le minutage commence lorsque vous envoyez la Wait-Job commande, et non la Start-Job commande.
Si cette durée est dépassée, l’attente se termine et l’exécution se poursuit, même si le travail est toujours en cours d’exécution. La commande n’affiche aucun message d’erreur.
Propriétés du paramètre
| Type: | Int32 |
| Valeur par défaut: | None |
| Prend en charge les caractères génériques: | False |
| DontShow: | False |
| Alias: | TimeoutSec |
Jeux de paramètres
(All)
| Position: | Named |
| Obligatoire: | False |
| Valeur du pipeline: | False |
| Valeur du pipeline par nom de propriété: | False |
| Valeur des arguments restants: | False |
CommonParameters
Cette applet de commande prend en charge les paramètres courants : -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction et -WarningVariable. Pour plus d’informations, consultez about_CommonParameters.
Entrées
System.Management.Automation.RemotingJob
Vous pouvez diriger un objet de travail vers cette applet de commande.
Sorties
System.Management.Automation.PSRemotingJob
Cette applet de commande retourne des objets de travail qui représentent les travaux dans un état de fin. Si l’attente se termine parce que la valeur du paramètre Timeout est dépassée, Wait-Job ne retourne aucun objet.
Notes
PowerShell inclut les alias suivants pour Wait-Job:
- Toutes les plateformes :
wjb
Par défaut, Wait-Job retourne ou termine l’attente, lorsque les travaux se trouvent dans l’un des états suivants :
- Terminé
- Échec
- Arrêté
- Suspendu
- Déconnecté
Pour continuer Wait-Job à attendre les travaux suspendus et déconnectés, utilisez le paramètre Force .