Commande PowerShell Start-Sleep : syntaxe, exemples

26 août 2021 7353 Vues Veille Powershell

Besoin de retarder un script PowerShell pendant un certain temps ? Ensuite, vous avez besoin de la commande PowerShell Start-Sleep.





Ce guide vous apprend tout ce que vous devez savoir sur le sommeil PowerShell. Je commence le guide en expliquant la syntaxe de la commande Start-Sleep.



Ensuite, dans la dernière section du guide, je partage 9 exemples concrets d'utilisation de la commande Start-Sleep.

Parcourir les sujets de publication



Powershell Sleep : Syntaxe de l'applet de commande Start-Sleep

Powershell Sleep : Syntaxe de l'applet de commande Start-Sleep

Voici la syntaxe de l'applet de commande Start-Sleep :



|__+_| |__+_|

Cette applet de commande a deux paramètres

Millisecondes – utilisez-le pour spécifier le temps (Int32) en millisecondes. PowerShell retardera les millisecondes que vous entrez.



Par exemple, si je veux retarder mon script de 300 000 millisecondes (5 minutes), j'exécuterai la commande ci-dessous :



|__+_|

Secondes : Vous pouvez également spécifier le délai en secondes. Pour ce faire, utilisez le Secondes paramètre de la commande Start-Sleep.

Pour continuer avec le dernier exemple, pour retarder mon script de 5 minutes (300 secondes), je vais lancer la commande ci-dessous :

|__+_|

Exemples de sommeil Powershell

Cette section contient des exemples d'utilisation de Powershell Sleep pour résoudre certaines tâches complexes telles que le compte à rebours, etc.

Comment configurer PowerShell Sleep en millisecondes, 1 seconde (ou moins), minutes ou pendant 1 heure

Comme je l'ai expliqué dans la dernière section, la commande Start-Sleep a deux syntaxes, comme indiqué ci-dessous :

|__+_|

Pour définir PowerShell sur un délai de 30 000 millisecondes (30 secondes), utilisez l'une des commandes ci-dessous :

|__+_|

De plus, vous pouvez utiliser le paramètre de la milliseconde pour régler le sommeil à moins de 1 seconde. Par exemple, si vous souhaitez retarder un script PowerShell de 0,0005 seconde (0,5 milliseconde), vous pouvez utiliser l'une des commandes ci-dessous :

|__+_|

Dans mon troisième exemple de cette sous-section, je souhaite mettre PowerShell en veille pendant 1 heure. La meilleure approche ici consiste à utiliser le paramètre Seconds de la commande Start-Sleep.

Pour ce faire, vous devez convertir 1 heure en secondes. Vous pouvez facilement le faire en recherchant convertir 1 heure en secondes dans google.

Le résultat est de 3600 secondes. Ainsi, pour retarder un script PowerShell d'une heure, utilisez la commande PowerShell Start-Sleep ci-dessous :

|__+_|

Comme vous pouvez le voir sur la capture d'écran ci-dessous, l'invite de commande PowerShell ne sera pas disponible tant que le délai (1 heure) ne sera pas terminé.

Comment configurer PowerShell Sleep en millisecondes, 1 seconde (ou moins), minutes ou pendant 1 heure

De même, vous pouvez mettre PowerShell en veille pendant 5 minutes à l'aide de la commande ci-dessous :

|__+_| 5 minutes équivaut à 300 secondes

Comment utiliser Powershell Sleep To Countdown (fonction Start-Count)

J'ai écrit une fonction PowerShell (Start-Count), qui compte à rebours ou à rebours. La fonction a 4 paramètres :

Compte à rebours : Lorsque vous spécifiez ce paramètre, Start-Count compte à rebours à partir d'un nombre spécifié
CountUp : Alternativement, en spécifiant le Compter jusqu'à le paramètre fait que Start-Count compte vers le haut à partir d'un nombre spécifié
Compte de : Contrairement à la Compte à rebours et Compter jusqu'à , ce paramètre nécessite une entrée. Utilisez ceci pour spécifier le nombre à partir duquel compter vers le bas ou vers le haut.
Compter : Utilisez ce paramètre pour spécifier le nombre à compter (vers le bas ou vers le haut)

Suivez les étapes ci-dessous pour télécharger et utiliser la fonction Start-Count :

comment regarder la nfl en direct sur kodi
  1. Cliquez sur télécharger Start-Count.zip
  2. Ensuite, décompressez Start-Count.zip. Une fois décompressé, vous verrez un dossier appelé Start-Count. Ce dossier contient le module PowerShell
  3. Copiez le dossier Start-Count dans votre dossier PowerShell Modules. Il se trouve dans C:Users om_profilDocumentsWindowsPowerShellModules
  4. Débloquez le fichier de module téléchargé avec la commande ci-dessous :
|__+_|
  1. Enfin, ouvrez PowerShell et exécutez Start-Count. Dans le premier exemple, je veux compter à rebours de 10 à 0.
|__+_|

La commande commencera à décompter de 10 jusqu'à ce qu'elle atteigne zéro (0). Voir la capture d'écran ci-dessous…

Comment utiliser Powershell Sleep To Countdown (fonction Start-Count)

Dans cette deuxième commande, je compte de 5 à 40…

|__+_|

Comment utiliser Powershell Sleep avec un temps aléatoire

Lorsque vous exécutez Start-Sleep, PowerShell compte à rebours à partir du début de l'heure spécifiée. Par exemple, si j'exécute Start-Sleep et spécifie 20 secondes, PowerShell comptera à rebours de 1 seconde.

Cependant, si vous souhaitez que le compte à rebours soit randomisé (c'est-à-dire un compte à rebours de 2, 5, 6), vous devez combiner Start-Sleep et Get-Random.

Par exemple, si je veux que PowerShell se mette en veille à des intervalles compris entre 1 et 10 secondes, j'exécuterai la commande ci-dessous :

|__+_|

Placez cette commande avant d'exécuter les commandes que vous souhaitez exécuter avec un délai aléatoire…

Comment exécuter Powershell Sleep jusqu'à un certain temps

Dans certains scénarios de script PowerShell, vous souhaiterez peut-être mettre en veille jusqu'à un certain temps. Par exemple, vous souhaiterez peut-être régler le sommeil sur 30 secondes.

Pour y parvenir, il vous faut un Faire , Jusqu'à boucler.

Dans cet exemple, je veux que PowerShell dorme jusqu'à ce que la minuterie atteigne 30 secondes.

Tout d'abord, j'ai défini l'heure de début et l'heure de fin. L'heure de début est l'heure à partir de laquelle je veux compter.

Pour simplifier, je vais compter à partir de 0.

Tout d'abord, je vais définir d'où je veux compter….

|__+_|

Ensuite, je définirai où je veux compter…

|__+_|

Maintenant, je vais utiliser Faire , Jusqu'à boucle avec Start-Sleep comme indiqué dans le script ci-dessous :

Exécutez chaque commande une à la fois |__+_| J'ai mis tout le script Do, Until sur une seule ligne pour pouvoir l'exécuter dans PowerShell. Si vous souhaitez exécuter le script dansPowerShell ISE, vous pouvez l'écrire comme ci-dessous : |__+_|

Cependant, pour exécuter le script dans PowerShell, exécutez chacune des commandes ci-dessous :

|__+_|

La commande comptera de 0 à 30, avec un intervalle de 1 seconde. Voir la capture d'écran ci-dessous…

Comment ajouter PowerShell Sleep après ou avant une commande

Ceci est un exemple très simple. Si vous souhaitez ajouter un délai après une commande PowerShell, ajoutez la commande Start-Sleep après la commande PowerShell.

Par exemple, pour ajouter 5 minutes d'attente après l'exécution de Get-Process, utilisez la commande ci-dessous :

|__+_|

Comme indiqué dans la capture d'écran ci-dessous, lorsque la commande Get-Process se termine, PowerShell ne revient pas à son invite. Ceci indique que le délai de 5 minutes (300 secondes) est en place.

Comment ajouter PowerShell Sleep après ou avant une commande

À l'opposé de l'exemple ci-dessus, vous pouvez également utiliser PowerShell sleep pour ajouter un délai, puis exécuter une commande.

Cette fois, au lieu d'ajouter Start-Sleep après la commande, nous l'ajoutons avant la commande…

|__+_|

Cette fois-ci, le délai se déclenchera avant l'exécution de la commande.

Comment utiliser PowerShell Sleep pour réessayer un script

En essayant de trouver une solution à cela, j'ai trouvé un script existant soumis par un stackoverflow.com contributeur (Ansgar Wiechers).

Ansgar a créé la fonction ci-dessous. Il l'a appelé Retry-Command. J'ai changé la fonction en Redo-Command afin d'utiliser un verbe approuvé par PowerShell.

En dehors de cela, je donne tout le crédit à Ansgar Wiechers. Voici le script complet…

|__+_|

Eh bien, j'ai également téléchargé le script pour que nos lecteurs puissent le télécharger et l'utiliser. Pour télécharger et utiliser la fonction, suivez les étapes ci-dessous :

  1. Cliquez sur télécharger Redo-Command.zip . Ensuite, décompressez le fichier zip téléchargé.
  2. Copiez le dossier décompressé, Redo-Command vers c:usersDocumentsWindowsPowerShellModules
  3. Ensuite, ouvrez PowerShell et exécutez la commande ci-dessous - la commande déverrouille le fichier. Cela empêche PowerShell de vous avertir constamment que le fichier a été téléchargé depuis Internet
|__+_|
  1. Enfin, pour utiliser la fonction PowerShell Sleep pour réessayer un script, exécutez une commande comme celle ci-dessous :
|__+_|

La nouvelle tentative par défaut est de 5 fois. Cependant, si vous souhaitez ajouter une nouvelle tentative personnalisée, utilisez le paramètre Maximum comme indiqué ci-dessous…

|__+_|

Dans la dernière commande, vous obtenez une nouvelle tentative 8 fois avant qu'une erreur ne soit renvoyée.

Comment mettre un script PowerShell en veille jusqu'à ce que le fichier existe

Pour mettre un script PowerShell en veille jusqu'à ce qu'un fichier existe, vous devez utiliser Test-Path et Start-Sleep dans une boucle While.

Voici la syntaxe générale de la boucle PowerShell While dont vous avez besoin :

|__+_|

Pour donner un exemple, je vais vérifier si un fichier appelé eventlog.txt dans le lecteur D existe. Le script ne se poursuivra pas tant que le fichier ne sera pas disponible.

Voici le scénario…

|__+_|

La commande Test-Path vérifie si un fichier existe. Si le fichier existe, Test-Path renvoie True.

Au contraire, si le fichier n'existe pas, Test-Path renvoie False. En ajoutant ! avant Test-Path, j'ai inversé le résultat.

Ainsi, le résultat de la boucle while est True si le fichier n'existe pas.

Essentiellement, ce que dit la commande est ceci : si Test-Path d:eventlog.txt est égal à Faux (Le fichier n'existe PAS), retour Vrai pour la boucle while. De plus, tant que la condition while est Vrai , exécutez la commande Start-Sleep 10 (retard de 10 secondes).

Ensuite, revenez à la partie condition de la boucle while et vérifiez si le fichier existe. Sinon, attendez encore 10 secondes. Cette boucle se poursuivra jusqu'à ce que le fichier existe. Ensuite, la boucle se rompra et PowerShell reprendra.

Pour tester ce script, je vais d'abord l'exécuter (sans le fichier, d:eventlog.txt)

Comme le montre la capture d'écran ci-dessous, la boucle while continuera car le fichier n'existe pas.

Comment mettre un script PowerShell en veille jusqu'à ce que le fichier existe

Pour casser la boucle, je vais créer le fichier. Une fois que j'ai créé le fichier, la boucle while se cassera et PowerShell continuera (voir la capture d'écran ci-dessous):

comment empêcher la mise en mémoire tampon des vidéos youtube

Comment faire en sorte que PowerShell dorme pour toujours jusqu'à ce que j'appuie sur Ctrl + C

Si vous exécutez une commande que vous ne voulez pas interrompre tant que vous n'avez pas appuyé sur Ctrl + C, vous avez besoin de la boucle while.

Par exemple, pour exécuter la commande PowerShell – Get-EventLog -LogName Application – pour toujours (en continu, jusqu'à ce que vous appuyiez sur Ctrl + C), utilisez la commande ci-dessous :

|__+_|

Ce que fait la commande est la suivante : tant que la commande dans la partie {} de la boucle while est vraie, continuez à exécuter.

Comment mettre PowerShell en veille jusqu'à ce que le processus d'exécution soit terminé

Cet exemple est l'opposé direct du dernier exemple. Dans le dernier exemple, j'ai maintenu un processus en cours d'exécution en continu.

Cependant, dans cet exemple, je veux que PowerShell dorme jusqu'à ce que le processus soit terminé. Une fois le processus terminé, le sommeil se termine.

Comme dans l'exemple précédent, une boucle while fera l'affaire. Cependant, la façon dont la boucle while est configurée est différente.

Cette fois, j'ai mis la commande dans le bloc () de la boucle while. Cependant, je dois ajouter! avant la commande.

Voici mon exemple…

|__+_|

Cette commande indique à PowerShell, alors que (Get-EventLog -LogName Application) est vrai, mettez PowerShell en veille pendant 5 secondes. Après la mise en veille, PowerShell vérifiera si la commande (Get-EventLog -LogName Application) est toujours en cours d'exécution.

S'il est toujours en cours d'exécution, commencez à dormir pendant 5 secondes supplémentaires. Cette boucle continuera jusqu'à ce que la commande se termine…

J'espère que vous avez trouvé ce guide à la fois facile à comprendre et utile ! Si vous avez trouvé le guide utile, veuillez voter Oui à Cet article était-il utile ? au dessous de.

Vous pouvez également donner des commentaires détaillés en utilisant LAISSER UNE RÉPONSE à la fin de cette page.

Enfin, nos autres guides PowerShell peuvent vous être utiles. Pour lire des guides PowerShell plus perspicaces, visitez notre page PowerShell et CMD expliqués.

Une dernière chose avant de partir, si vous voulez apprendre PowerShell, vous pouvez mettre en signet notre page de didacticiels PowerShell.