Potresti provare a scrivere uno script che richiede l’input dell’utente per essere completato, o talvolta lo script richiede un ritardo per consentire a un altro processo di terminare l’esecuzione per primo.
Il comando più utilizzato per scopi come questo è il cmdlet Start-Sleep
. Poiché PowerShell supporta anche i comandi CMD, puoi utilizzare anche i comandi Pause
e Timeout
.
In questo articolo, abbiamo spiegato l’utilizzo di questi e altri comandi per mettere in pausa in Powershell.
Se volete continuare a leggere questo post su "[page_title]" cliccate sul pulsante "Mostra tutti" e potrete leggere il resto del contenuto gratuitamente. ebstomasborba.pt è un sito specializzato in Tecnologia, Notizie, Giochi e molti altri argomenti che potrebbero interessarvi. Se desiderate leggere altre informazioni simili a [page_title], continuate a navigare sul web e iscrivetevi alle notifiche del blog per non perdere le ultime novità .
Sommario
Come mettere in pausa PowerShell
È possibile utilizzare i metodi seguenti per sospendere PowerShell. Poiché abbiamo incluso sia metodi nativi che non nativi, puoi utilizzarli come appropriato.
Inizio-sonno
Lo scopo del cmdlet Start-Sleep
è sospendere l’attività in uno script o in una sessione per un periodo di tempo specificato. Puoi usarlo con i parametri -Seconds
e -Milliseconds
, come mostrato negli esempi seguenti.
Per sospendere l’attività per 5 secondi
Start-Sleep -Seconds 5
Per sospendere l’attività per 200 millisecondi
Start-Sleep -Milliseconds 200
Per sospendere l’attività per 4,3 secondi, puoi utilizzare una delle seguenti opzioni:
Start-Sleep -Seconds 4.3
Start-Sleep -Milliseconds 4300
Start-Sleep -Seconds 4 -Milliseconds 300
Puoi anche utilizzare gli alias PowerShell integrati. Puoi usare sleep e -s al posto rispettivamente di Start-Sleep
e -Seconds
. Quindi, il comando precedente può essere scritto come:
Sleep -s 4.3
Infine, puoi premere CTRL + C per uscire da Start-Sleep
.
Read-Host
Lo scopo del cmdlet Read-Host
è leggere alcuni input dalla console e, così facendo, mette in pausa lo script. Viene normalmente utilizzato per richiedere all’utente di inserire dati come password, nomi utente, ecc.
Ad esempio, il comando seguente richiede all’utente di inserire il proprio nome e l’input viene salvato nella “variabile $Name”.
$Name = Read-Host "Enter Your Name"
Se lo usi per richiedere all’utente la password, potresti voler aggiungere i parametri -AsSecureString
o -MaskInput
alla fine per visualizzare gli asterischi al posto della password.
Console.ReadKey
Il metodo Console.ReadKey()
viene spesso utilizzato per sospendere l’esecuzione del programma finché l’utente non preme un tasto. Ad esempio, se stai tentando di mettere in pausa il programma fino a quando l’utente non preme Invio, lo useresti come tale:
Console.ReadKey().Key != ConsoleKey.Enter
RawUI.ReadKey
Il metodo RawUI.ReadKey
è simile al metodo Console ReadKey, ad eccezione del fatto che puoi utilizzare alcune altre opzioni con questo metodo. Queste opzioni sono:
AllowCtrlC
: consente l’elaborazione di CTRL + C come sequenza di tasti invece di causare un evento di interruzione.
IncludeKeyDown
– Include gli eventi key down (attivati ​​quando viene premuto un tasto).
IncludeKeyUp
: include gli eventi key up (attivati ​​quando l’utente rilascia un tasto sulla tastiera).
NoEcho
: non visualizza il carattere del tasto nella finestra quando viene premuto.
Si noti che deve essere incluso uno tra IncludeKeyDown o IncludeKeyUp o entrambi. Detto questo, puoi utilizzare questo metodo con le opzioni in quanto tali:
$host.UI.RawUI.ReadKey('AllowCtrlC,IncludeKeyDown')
Thread.Dormire
Il metodo Thread.Sleep
sospende il thread corrente per un periodo di tempo specificato. È possibile utilizzare questo metodo con un argomento millisecondsTimeout o un oggetto TimeSpan, come mostrato di seguito.
Nell’esempio seguente, il thread corrente viene messo in pausa per 3,5 secondi
[System.Threading.Thread].Sleep(3500)
In alternativa, puoi inserire il valore sotto forma di giorni, ore, minuti, secondi e millisecondi come mostrato di seguito:
[System.Threading.Thread].Sleep([TimeSpan]::New(0, 0, 0, 3, 500))
Set-PSBreakPoint
Il cmdlet Set-PSBreakpoint
viene utilizzato per il debug degli script di PowerShell. Viene usato per impostare i punti di interruzione in cui PowerShell interrompe temporaneamente l’esecuzione e passa il controllo al debugger.
È possibile impostare tre tipi di punti di interruzione con questo cmdlet; Punto di interruzione riga, Punto di interruzione comando e Punto di interruzione variabile. I casi d’uso per questo sono innumerevoli, quindi ti consigliamo di controllare la documentazione Set-PSBreakPoint di Microsoft per ulteriori dettagli.
Aspetta-lavoro
È possibile utilizzare il cmdlet Wait-Job
per attendere che un processo specificato o tutti i processi si trovino in uno stato di interruzione (completato, non riuscito, interrotto, sospeso o disconnesso) prima di continuare l’esecuzione.
Nell’esempio seguente, il cmdlet sospenderà lo script di PowerShell finché Job1 non si trova in uno stato di interruzione.
Wait-Job -Name "Job1"
Per fare lo stesso per tutti i lavori, puoi usare:
Get-Job | Wait-Job
È inoltre possibile utilizzare l’opzione -Timeout
per specificare in secondi il tempo di attesa per il completamento del processo prima che si verifichi un timeout e lo script riprenda l’esecuzione.
Di più
Nel caso in cui si esegua un comando o uno script che visualizza una grande quantità di output, è possibile utilizzare il comando more
per mettere in pausa dopo la visualizzazione di una schermata dei risultati.
Ad esempio, per visualizzare la prima schermata di informazioni da un file denominato testfile.new
, puoi utilizzare:
more < testfile.new
Puoi anche reindirizzare a more
come tale:
type testfile.new | more
Comandi Pausa e Timeout
Vale la pena ricordare che se si desidera utilizzare i comandi CMD anziché i cmdlet di Powershell, è possibile utilizzare i comandi pause
e timeout
poiché sono compatibili con Powershell.
Se aggiungi semplicemente il comando pause
al tuo script, riceverai il seguente messaggio o un messaggio simile quando viene eseguito:
Premi Invio per continuare...
Puoi invece utilizzare timeout
se desideri specificare la quantità di tempo (in secondi) di pausa prima che la sessione continui come tale:
timeout /t 7
Gli utenti possono a volte premere involontariamente un tasto che interrompe bruscamente il timeout. Se preferisci ignorare tali sequenze di tasti, puoi utilizzare l'opzione /nobreak
come tale:
timeout /t 7 /nobreak