Le cmdlet Start-Sleep de PowerShell ou l’alias sleep
est un cmdlet simple avec un seul objectif ; mettre en pause un script. Lorsqu’il est exécuté dans la console PowerShell, un script exécuté par la console ou dans l’ISE PowerShell, le cmdlet met simplement en pause un script ou un module dans la session PowerShell jusqu’à ce que le temps requis en secondes ou en millisecondes se soit écoulé.
Ce cmdlet est simple mais peut être appliqué de quelques manières différentes qui nous permettront, en tant que scripteurs, de créer des scripts bien écrits.
Utilisation de Start-Sleep
L’utilisation du cmdlet Start-Sleep est extrêmement facile puisqu’il n’a, après tout, que deux paramètres ! Disons que je veux mettre en pause mon script parce que j’attends qu’un autre processus environnemental s’exécute. Ce processus prend environ 10 secondes, et je dois m’assurer que mon script ne continue pas à s’exécuter avant que cet événement externe ne soit terminé.
Pour mettre en pause le script pendant 10 secondes, je vais simplement utiliser Start-Sleep -Second 10
. Si je veux être pointilleux, je pourrais également spécifier le temps en millisecondes comme Start-Sleep -Milliseconds 10000.
Contexte d’exemple
L’un des usages les plus courants de ce cmdlet Start-Sleep se trouve à l’intérieur d’une boucle while
. Une boucle while
est une construction en PowerShell qui exécute du code pendant que quelque chose d’autre se produit. L’un des meilleurs usages d’une boucle while
est d’attendre que quelque chose d’autre se produise, plutôt que de simplement deviner la durée d’un processus et d’exécuter directement ce cmdlet.
Par exemple, peut-être devez-vous attendre qu’un fichier apparaisse dans un dossier. Peut-être que ce fichier est déposé là par un autre logiciel. Une fois que le fichier est dans le dossier, vous devez exécuter du code contre lui. Cet exemple est un excellent exemple d’utilisation d’une boucle while
et de Start-Sleep
.
Dans l’exemple ci-dessous, mon code attend que le fichier C:\File.txt
apparaisse. Si cela était dans un script, le script serait en pause jusqu’à ce que cet événement se produise. Techniquement, nous n’avons pas besoin de Start-Sleep
pour faire cela, mais sinon utilisé, ce code pourrait paralyser votre ordinateur. La vitesse à laquelle il pourrait vérifier continuellement ce fichier dépendrait de PowerShell!
Nous n’avons pas besoin de vérifier ce fichier toutes les 0,0455 ms. Au lieu de cela, nous devrions ralentir cette vérification et effectuer le test toutes les cinq secondes. Ralentir une boucle while est une excellente utilisation de la commande Start-Sleep
.
Pour un exemple d’utilisation de cette commande avec une jolie barre de progression, consultez ceci.