Une autre fonctionnalité fantastique de PowerShell 2.0, laquelle convient également pour la gestion à distance, est la prise en charge des tâches d’arrière-plan. Dans PowerShell 1.0, si vous deviez exécuter une expression de longue durée, votre session PowerShell était bloquée jusqu’à la fin du processus.
Il n’existait pas
Tâches d’arrière-plan PowerShell

d’approche native pour placer un processus en arrière-plan comme c’est le cas dans les univers Unix et Linux. PowerShell peut lancer des tâches sur l’ordinateur local ou sur un ordinateur distant.
Quelques cmdlets, essentiellement Get-WMIObject et Invoke-Command, comportent un paramètre –AsJob :
PS C:\> get-wmiobject win32_ntlogevent -filter « logfile=’system' » -asjob
Au lieu d’attendre les résultats, PowerShell crée une tâche d’arrière-plan. La version 2.0 introduit plusieurs cmdlets de tâches. La cmdlet Get-Job affiche le statut d’une tâche donnée.
Voyons le statut de la tâche WMI que je viens d’exécuter :
PS C:\> get-job job13
Id Name State HasMoreData Location Command
— —- —– ———– ——– ——-
13 Job13 Completed True localhost Get-WMIObject
La cmdlet Receive-Job retourne les résultats de la tâche vers ma console. Je peux exploiter les données dans un pipeline PowerShell comme pour n’importe quelle autre expression. Vous noterez que j’utilise le paramètre –keep afin de conserver les résultats de ma tâche. Sinon, ils seront effacés du cache de tâche à la fin de Receive-Job :
PS C:\> receive-job job13 -keep | sort Type | group Type | sort Count
-Descending | format-table
Count,Name -auto
Count Name
—– —-
24127 Information
354 Error
106 Warning
3 Critical
Vous pouvez appliquer cette même technique dans une session à distance interactive. Les tâches d’arrière-plan sont particulièrement indiquées pour l’exécution de tâches sur de multiples ordinateurs. En reprenant la collection de sessions distantes créées précédemment, nous allons exécuter la même commande à distance, mais sous forme de tâche locale, d’où aucun temps d’attente de mon côté :
PS C:\> invoke-command $sessions -scriptblock {get-eventlog -list |
where {$_.Entries.count -gt 0}} –asjob
Si la tâche nécessite trop de temps, je peux toujours l’arrêter avec Stop-Job. Sinon, j’ai la possibilité d’accomplir d’autres tâches et de vérifier périodiquement le statut de la tâche. Une fois le traitement terminé, il ne me reste plus qu’à recevoir les résultats et à les exploiter comme bon me semble.
L’association de la gestion à distance et des tâches d’arrière- plan signifie que vous pouvez accomplir beaucoup de choses sans avoir à attendre les résultats. Il est possible de récupérer les résultats lorsque vous êtes prêt et de les employer dans le cadre de n’importe quelle expression PowerShell.
Encore une fois, je vous encourage à examiner l’aide complète sur les cmdlets de tâches, notamment les rubriques Invoke-Command et About Job.
Téléchargez cette ressource

État des lieux de la sécurité cloud-native
L’État des lieux de la sécurité cloud-native vous offre une analyse complète des problématiques, des tendances et des priorités qui sous-tendent les pratiques de sécurité cloud-native dans le monde entier. Une lecture indispensable pour renforcer votre stratégie de sécurité dans le cloud. Une mine d’infos exclusives pour élaborer votre stratégie de sécurité cloud-native.
Les articles les plus consultés
- N° 2 : Il faut supporter des langues multiples dans SharePoint Portal Server
- Les 6 étapes vers un diagnostic réussi
- Chiffrements symétrique vs asymétrique
- Cybersécurité Active Directory et les attaques de nouvelle génération
- Partager vos images, vidéos, musique et imprimante avec le Groupe résidentiel
Les plus consultés sur iTPro.fr
- Reporting RSE : un levier d’innovation !
- De la 5G à la 6G : la France se positionne pour dominer les réseaux du futur
- Datanexions, acteur clé de la transformation numérique data-centric
- Les PME attendent un meilleur accès aux données d’émissions de la part des fournisseurs
- Fraude & IA : Dr Jekyll vs. Mr Hyde, qui l’emporte ?
