Il cmdlet Start-Sleep di PowerShell o l’alias sleep
è un semplice cmdlet con un solo scopo; mettere in pausa uno script. Quando eseguito, nella console di PowerShell, uno script eseguito dalla console o nell’ISE di PowerShell, il cmdlet mette semplicemente in pausa uno script o un modulo nella sessione di PowerShell fino a quando non è trascorso il tempo richiesto in secondi o millisecondi.
Questo cmdlet è semplice ma può essere applicato in diversi modi che ci permetteranno di creare script ben scritti.
Utilizzo di Start-Sleep
Utilizzare il cmdlet Start-Sleep è estremamente facile, visto che, dopo tutto, ha solo due parametri! Supponiamo che voglio mettere in pausa il mio script perché sto aspettando che qualche altro processo ambientale venga eseguito. Quel processo richiede circa 10 secondi, e devo essere sicuro che il mio script non continui a eseguire prima che quell’evento esterno sia terminato.
Per mettere in pausa lo script per 10 secondi, userò semplicemente Start-Sleep -Second 10
. Se voglio essere preciso, potrei anche specificare il tempo in millisecondi come Start-Sleep -Milliseconds 10000.
Esempio di Contesto
Uno dei più comuni utilizzi di questo cmdlet Start-Sleep è all’interno di un ciclo while
. Un ciclo while
è una costruzione in PowerShell che esegue il codice mentre qualcos’altro sta accadendo. Uno dei migliori utilizzi di un ciclo while
è aspettare che accada qualcos’altro. Piuttosto che solo ipotizzare quanto tempo possa richiedere un processo ed eseguire direttamente questo cmdlet.
Ad esempio, forse devi aspettare che un file appaia in una cartella. Forse quel file viene depositato lì da un altro software. Una volta che il file è nella cartella, è necessario eseguire del codice su di esso. Questo esempio è un ottimo esempio di utilizzo di un ciclo while
e di Start-Sleep
.
Nell’esempio qui sotto, il mio codice sta aspettando che il file C:\File.txt
appaia. Se questo fosse in uno script, metterebbe in pausa lo script fino a quando questo evento non si verificasse. Tecnicamente, non abbiamo bisogno di Start-Sleep
per fare questo, ma se non usato, questo codice potrebbe bloccare il tuo computer. La velocità con cui potrebbe continuamente controllare questo file sarebbe affidata a PowerShell!
Non abbiamo bisogno di controllare questo file ogni 0,0455 ms. Invece, dovremmo rallentare quel controllo e eseguire il test solo ogni cinque secondi. Rallentare un ciclo while è un ottimo utilizzo del comando Start-Sleep
.
Per un esempio di utilizzo di questo cmdlet con una bella barra di avanzamento, dai un’occhiata qui.