Comando PowerShell Start-Sleep: sintassi, esempi

26 agosto 2021 7353 Visualizzazioni Sonno Powershell

Hai bisogno di ritardare uno script di PowerShell per un po'? Quindi, è necessario il comando PowerShell Start-Sleep.





Questa guida ti insegna tutto ciò che devi sapere sul sonno di PowerShell. Inizio la guida spiegando la sintassi del comando Start-Sleep.



Quindi, nella sezione finale della guida, condivido 9 esempi di vita reale su come utilizzare il comando Start-Sleep.

Sfoglia gli argomenti dei post



Powershell Sleep: sintassi del cmdlet Start-Sleep

Powershell Sleep: sintassi del cmdlet Start-Sleep

Ecco la sintassi del cmdlet Start-Sleep:



|_+_| |_+_|

Questo cmdlet ha due parametri

Millisecondi – usalo per specificare il tempo (Int32) in millisecondi. PowerShell ritarderà per i millisecondi immessi.



Ad esempio, se voglio ritardare il mio script di 300000 millisecondi (5 minuti), eseguirò il comando seguente:



|_+_|

Secondi : È anche possibile specificare il periodo di ritardo in secondi. Per fare ciò, utilizzare il Secondi parametro del comando Start-Sleep.

Per continuare con l'ultimo esempio, per ritardare il mio script di 5 minuti (300 secondi), eseguirò il comando seguente:

|_+_|

Esempi di sonno Powershell

Questa sezione contiene alcuni esempi di come utilizzare Powershell Sleep per risolvere alcune attività complesse come il conto alla rovescia e altro.

Come impostare la sospensione di PowerShell in millisecondi, 1 secondo (o meno), minuti o per 1 ora

Come ho spiegato nell'ultima sezione, il comando Start-Sleep ha due sintassi, come mostrato di seguito:

|_+_|

Per impostare PowerShell per un ritardo di 30000 millisecondi (30 secondi), utilizzare uno dei comandi seguenti:

|_+_|

Inoltre, puoi utilizzare il parametro Millisecond per impostare lo sleep a meno di 1 secondo. Ad esempio, se desideri ritardare uno script PowerShell di 0,0005 secondi (0,5 millisecondi), puoi utilizzare uno dei comandi seguenti:

|_+_|

Nel mio terzo esempio in questa sottosezione, voglio impostare la sospensione di PowerShell per 1 ora. L'approccio migliore qui è usare il parametro Seconds del comando Start-Sleep.

Per farlo, però, devi convertire 1 ora in secondi. Puoi farlo facilmente cercando convertire 1 ora in secondi in google.

Il risultato è 3600 secondi. Quindi, per ritardare uno script di PowerShell di 1 ora, utilizzare il comando PowerShell Start-Sleep di seguito:

|_+_|

Come puoi vedere dallo screenshot qui sotto, il prompt dei comandi di PowerShell non sarà disponibile fino al termine del ritardo (1 ora).

Come impostare la sospensione di PowerShell in millisecondi, 1 secondo (o meno), minuti o per 1 ora

Allo stesso modo, puoi impostare PowerShell per dormire per 5 minuti usando il comando seguente:

|_+_| 5 minuti equivalgono a 300 secondi

Come utilizzare Powershell Sleep per il conto alla rovescia (funzione Start-Count)

Ho scritto una funzione di PowerShell (Start-Count), che conta alla rovescia o aumenta. La funzione ha 4 parametri:

Conto alla rovescia : Quando si specifica questo parametro, Start-Count esegue il conto alla rovescia da un numero specificato
CountUp: In alternativa, specificando il Conto alla rovescia parametro fa contare Start-Count verso l'alto da un numero specificato
Contare da : Non mi piace il Conto alla rovescia e Conto alla rovescia , questo parametro richiede un input. Utilizzare questo per specificare il numero da cui eseguire il conto alla rovescia o verso l'alto.
Contare fino a : utilizzare questo parametro per specificare il numero su cui contare (verso il basso o verso l'alto)

Segui i passaggi seguenti per scaricare e utilizzare la funzione Start-Count:

  1. Fare clic su scarica Start-Count.zip
  2. Quindi, decomprimi Start-Count.zip. Una volta decompresso, vedrai una cartella chiamata Start-Count. Questa cartella contiene il modulo PowerShell
  3. Copia la cartella Start-Count nella cartella Moduli di PowerShell. Si trova in C:Utenti ome_profiloDocumentiWindowsPowerShellModuli
  4. Sblocca il file del modulo scaricato con il comando seguente:
|_+_|
  1. Infine, apri PowerShell ed esegui Start-Count. Nel primo esempio, voglio contare alla rovescia da 10 a 0.
|_+_|

Il comando inizierà il conto alla rovescia da 10 fino a raggiungere lo zero (0). Guarda lo screenshot qui sotto...

Come utilizzare Powershell Sleep per il conto alla rovescia (funzione Start-Count)

In questo secondo comando conto da 5 a 40...

|_+_|

Come utilizzare Powershell Sleep con tempo casuale

Quando esegui Start-Sleep, PowerShell esegue il conto alla rovescia dall'inizio del tempo specificato. Ad esempio, se eseguo Start-Sleep e specifico 20 secondi, PowerShell eseguirà il conto alla rovescia di 1 secondo.

Tuttavia, se vuoi che il conto alla rovescia sia randomizzato (ovvero, il conto alla rovescia di 2, 5, 6), devi combinare Start-Sleep e Get-Random.

Ad esempio, se voglio che PowerShell dorma a intervalli compresi tra 1 e 10 secondi, eseguirò il comando seguente:

|_+_|

Inserisci questo comando prima di eseguire i comandi che desideri eseguire con un ritardo casuale...

Come eseguire Powershell Sleep fino a un certo momento

In alcuni scenari di script di PowerShell, potresti voler impostare la sospensione fino a un determinato momento. Ad esempio, potresti voler impostare la sospensione per 30 secondi.

Per raggiungere questo obiettivo, è necessario un Fare , Fino a quando ciclo continuo.

In questo esempio, voglio che PowerShell sia inattivo fino a quando il timer non raggiunge i 30 secondi.

Per prima cosa, ho impostato l'ora di inizio e l'ora di fine. L'ora di inizio è l'ora da cui voglio contare.

Per semplificare, conterò da 0.

nota fondamentale 8 bocca di leone

Prima di tutto, imposterò da dove voglio contare….

|_+_|

Quindi, imposterò dove voglio contare...

|_+_|

Ora userò Fare , Fino a quando loop con Start-Sleep come mostrato nello script seguente:

Esegui ogni comando uno alla volta |_+_| Ho messo l'intero script Do, Until in una singola riga in modo da poterlo eseguire in PowerShell. Se vuoi eseguire lo script inPowerShell ISE, puoi scriverlo come mostrato di seguito: |_+_|

Tuttavia, per eseguire lo script in PowerShell, esegui ciascuno dei comandi seguenti:

|_+_|

Il comando conterà da 0 a 30, con un intervallo di 1 secondo. Guarda lo screenshot qui sotto...

Come aggiungere la sospensione di PowerShell dopo o prima di un comando

Questo è un esempio molto semplice. Se vuoi aggiungere un ritardo dopo un comando di PowerShell, aggiungi il comando Start-Sleep dopo il comando di PowerShell.

Ad esempio, per aggiungere 5 minuti di attesa dopo l'esecuzione di Get-Process, utilizzare il comando seguente:

|_+_|

Come mostrato nella schermata seguente, al completamento del comando Get-Process, PowerShell non torna al prompt. Ciò indica che il ritardo di 5 minuti (300 secondi) è attivo.

Come aggiungere la sospensione di PowerShell dopo o prima di un comando

Sul lato opposto dell'esempio precedente, puoi anche usare la sospensione di PowerShell per aggiungere un ritardo, quindi eseguire un comando.

Questa volta, invece di aggiungere Start-Sleep dopo il comando, lo aggiungiamo prima del comando...

|_+_|

Questa volta, il ritardo si avvierà prima dell'esecuzione del comando.

Come utilizzare PowerShell Sleep per riprovare uno script

Nel tentativo di trovare una soluzione a questo, ho trovato uno script esistente inviato da a stackoverflow.com collaboratore (Ansgar Wiechers).

Ansgar ha creato la funzione di seguito. Lo chiamò Retry-Command. Ho modificato la funzione in Redo-Command in modo da utilizzare un verbo approvato da PowerShell.

A parte questo, do tutto il merito ad Ansgar Wiechers. Ecco la sceneggiatura completa...

|_+_|

Bene, ho anche caricato lo script affinché i nostri lettori lo scarichino e lo utilizzino. Per scaricare e utilizzare la funzione, attenersi alla seguente procedura:

  1. Fare clic su Scarica Redo-Command.zip . Quindi, decomprimi il file zip scaricato.
  2. Copia la cartella decompressa, Redo-Command in c:usersDocumentsWindowsPowerShellModules
  3. Quindi, apri PowerShell ed esegui il comando seguente: il comando sblocca il file. Ciò impedisce a PowerShell di avvisarti costantemente che il file è stato scaricato da Internet
|_+_|
  1. Infine, per utilizzare la funzione di PowerShell Sospensione per riprovare uno script, eseguire un comando come quello seguente:
|_+_|

Il tentativo predefinito è 5 volte. Tuttavia, se desideri aggiungere un nuovo tentativo personalizzato, utilizza il parametro Massimo come mostrato di seguito...

|_+_|

Nell'ultimo comando, viene eseguito un nuovo tentativo 8 volte prima che venga restituito un errore.

Come mettere in sospensione uno script di PowerShell finché il file non esiste

Per mettere in sospensione uno script di PowerShell finché non esiste un file, è necessario usare Test-Path e Start-Sleep in un ciclo While.

Ecco la sintassi generale del ciclo di PowerShell While di cui hai bisogno:

|_+_|

Per fare un esempio, verificherò se esiste un file chiamato eventlog.txt nell'unità D. Lo script non procederà finché il file non sarà disponibile.

Ecco la sceneggiatura...

|_+_|

Il comando Test-Path controlla se esiste un file. Se il file esiste, Test-Path restituisce True.

Al contrario, se il file non esiste, Test-Path restituisce False. Aggiungendo ! prima di Test-Path, ho invertito il risultato.

Quindi, il risultato nel ciclo while è True se il file non esiste.

In sostanza, ciò che dice il comando è questo: se Test-Path d:eventlog.txt è uguale Falso (Il file NON esiste), ritorno Vero per il ciclo while. Inoltre, per quanto riguarda la condizione while Vero , eseguire il comando Start-Sleep 10 (ritardo di 10 secondi).

Quindi, torna alla parte condizionale del ciclo while e controlla se il file esiste. In caso contrario, ritardare di altri 10 secondi. Questo ciclo continuerà fino a quando il file non esisterà, quindi il ciclo si interromperà e PowerShell riprenderà.

Per testare questo script, lo eseguirò prima (senza il file, d:eventlog.txt)

Come si vede nello screenshot qui sotto, il ciclo while continuerà perché il file non esiste.

Come mettere in sospensione uno script di PowerShell finché il file non esiste

Per interrompere il ciclo, creerò il file. Una volta creato il file, il ciclo while si interromperà e PowerShell continuerà (vedi lo screenshot qui sotto):

Come far dormire PowerShell per sempre finché non premo Ctrl + C

Se stai eseguendo un comando che non vuoi interrompere finché non premi Ctrl + C, hai bisogno del ciclo while.

Ad esempio, per eseguire il comando PowerShell – Get-EventLog -LogName Application – per sempre (in modo continuo, finché non si preme Ctrl + C), utilizzare il comando seguente:

come eseguire il root di zte z981
|_+_|

Quello che fa il comando è questo: finché il comando nella parte {} del ciclo while è vero, continua a correre.

Come sospendere PowerShell fino al termine del processo di esecuzione

Questo esempio è l'esatto opposto dell'ultimo esempio. Nell'ultimo esempio, ho mantenuto un processo in esecuzione continuamente.

Tuttavia, in questo esempio voglio che PowerShell si fermi fino al completamento del processo. Al termine del processo, il sonno termina.

Come nell'esempio precedente, un ciclo while farà il lavoro. Tuttavia, il modo in cui è configurato il ciclo while è diverso.

Questa volta, ho inserito il comando nel blocco () del ciclo while. Comunque devo aggiungere! prima del comando.

Ecco il mio esempio...

|_+_|

Questo comando dice a PowerShell, mentre (Get-EventLog -LogName Application) è true, imposta PowerShell in modalità sospensione per 5 secondi. Dopo la sospensione, PowerShell verificherà se il comando (Get-EventLog -LogName Application) è ancora in esecuzione.

Se è ancora in esecuzione, inizia a dormire per altri 5 secondi. Questo ciclo continuerà fino al completamento del comando...

Spero che tu abbia trovato questa guida facile da capire e utile! Se hai trovato utile la guida, vota gentilmente Sì a Questo post è stato utile? qui di seguito.

Puoi anche fornire un feedback dettagliato utilizzando la sezione LASCIA UNA RISPOSTA alla fine di questa pagina.

Infine, potresti trovare utili le nostre altre guide di PowerShell. Per leggere guide più approfondite su PowerShell, visita la nostra pagina Spiegazione di PowerShell e CMD.

Un'altra cosa prima di andare, se vuoi imparare PowerShell, potresti voler aggiungere la nostra pagina dei tutorial di PowerShell ai segnalibri.