PROJET AUTOBLOG


IT-Connect

Site original : IT-Connect

⇐ retour index

Comment faire une pause dans un script PowerShell ?

lundi 12 août 2019 à 14:00

I. Présentation

Pour réaliser une pause au sein d'un script Powershell, il y a deux méthodes très simple : utiliser le cmdlet Start-Sleep ou son alias sleep. Cette commande répond parfaitement à la question jour : comment faire une pause dans un script PowerShell ?

Lorsque l'on exécute cette commande, elle retarde la suite de l'exécution du script pendant la durée indiquée dans la commande Start-Sleep. Ce qui offre la possibilité de marquer une pause.

II. Cmdlet Start-Sleep

Le cmdlet Start-Sleep est très simple à utiliser : il ne contient que deux paramètres. Il s'agit des paramètres "Seconds" et "Milliseconds" qui permettent, respectivement, de réaliser une pause de X secondes ou X millisecondes.

Pour réaliser une pause d'une minute :

Start-Sleep -Seconds 10

Dans un script, nous pouvons avoir besoin de réaliser une pause en attendant un changement d'état : la création d'un fichier, l'arrêt d'un service, etc... Ce qui nous donne littérallement : Tant que le service XX n'est pas arrêté, effectue une pause de 5 secondes. Toutes les 5 secondes, on se repose la question et on repart pour 5 secondes pause si l'état n'a pas évolué.

Ce qui nous donne le code suivant :

$ServiceName = "wuauserv"
While ((Get-Service -Name $ServiceName).Status -ne "Stopped") {
   Start-Sleep -Seconds 5
}

Inutile d'effectuer le test toutes les 10 millisecondes... Toutes les 5 secondes, cela est suffisant et permet en quelque sorte d'optimiser l'utilisation des ressources de votre machine.

Ce cmdlet est facile à utiliser mais il est bien pratique !