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
Travail à distance – Guide complet pour les Directions IT et Métiers
Le travail à distance met à l'épreuve la maturité numérique des entreprises en termes de Cybersécurité, d'espace de travail, de bien-être des collaborateurs, de communication et gestion de projet à distance. Découvrez, dans ce nouveau Guide Kyocera, quels leviers activer prioritairement pour mettre en place des solutions de travail à domicile efficaces, pérennes et sécurisées.
Les articles les plus consultés
- Afficher les icônes cachées dans la barre de notification
- Partager vos images, vidéos, musique et imprimante avec le Groupe résidentiel
- Et si les clients n’avaient plus le choix ?
- N° 2 : Il faut supporter des langues multiples dans SharePoint Portal Server
- Activer la mise en veille prolongée dans Windows 10