Come premere un tasto qualsiasi per continuare in PowerShell

  1. Utilizza ReadKey (System.Console) per abilitare il premere un tasto per continuare in PowerShell
  2. Utilizza ReadKey (Console) per abilitare il premere un tasto per continuare in PowerShell
  3. Utilizza ReadKey (RawUI) per abilitare il premere un tasto per continuare in PowerShell
  4. Utilizza Read-Host per abilitare il premere un tasto per continuare in PowerShell
  5. Utilizza il comando cmd /c 'pause' per abilitare il premere un tasto per continuare in PowerShell
  6. Utilizza timeout per abilitare il premere un tasto per continuare in PowerShell
  7. Conclusione
Come premere un tasto qualsiasi per continuare in PowerShell

Nello scripting PowerShell, abilitare una funzionalità di premere un tasto per continuare è un requisito comune, specialmente quando si creano applicazioni interattive da riga di comando o si fornisce feedback agli utenti. Esistono diversi metodi per ottenere questa funzionalità, ognuno con i propri vantaggi e casi d’uso.

Questo articolo esplora vari metodi per implementare la funzionalità premere un tasto per continuare negli script PowerShell, che vanno da cmdlet incorporati a comandi esterni e oggetti COM.

Utilizza ReadKey (System.Console) per abilitare il premere un tasto per continuare in PowerShell

Il metodo [System.Console]::ReadKey() in PowerShell è utilizzato per leggere il prossimo tasto o tasto funzione premuto dall’utente dal flusso di input standard (tipicamente la tastiera). Quando viene chiamato senza argomenti, questo metodo attende che l’utente prema un tasto e restituisce un oggetto di tipo [System.ConsoleKeyInfo], che rappresenta il tasto premuto.

Il System.Console ReadKey può essere eseguito come mostrato di seguito. Accetta qualsiasi tasto tranne Shift, Alt, Ctrl e altri tasti modificatori.

$keyInfo = [System.Console]::ReadKey($true)
Write-Host "Key Pressed: $($keyInfo.KeyChar)"

Nella riga di codice $keyInfo = [System.Console]::ReadKey($true), stiamo utilizzando il metodo [System.Console]::ReadKey() per catturare l’input dell’utente. Passando $true come argomento, indichiamo che il tasto premuto non deve essere visualizzato nella finestra della console.

Questo impedisce alla console di essere ingombra di caratteri non necessari, fornendo un’esperienza utente più pulita. Per visualizzare l’output di $keyInfo, possiamo accedere alle sue proprietà utilizzando la notazione a punto.

Output:

powershell premi un tasto qualsiasi per continuare - output 1

Utilizza ReadKey (Console) per abilitare il premere un tasto per continuare in PowerShell

Puoi utilizzare il [Console]::ReadKey() per abilitare il premere un tasto per continuare in PowerShell. Può leggere tasti e modificatori mentre sospende l’esecuzione. Esclude Shift, Alt, Ctrl e altri tasti modificatori.

$keyInfo = [Console]::ReadKey()

Nella riga $keyInfo = [Console]::ReadKey(), utilizziamo il metodo [Console]::ReadKey() per catturare l’input dell’utente. Questo metodo attende che l’utente prema un tasto e restituisce un oggetto che rappresenta il tasto premuto, memorizzandolo nella variabile $keyInfo.

Output:

powershell premi un tasto per continuare - output 2

Utilizza ReadKey (RawUI) per abilitare il premere un tasto per continuare in PowerShell

Il metodo $Host.UI.RawUI.ReadKey() in PowerShell è utilizzato per leggere il prossimo tasto o tasto funzione premuto dall’utente dall’input della console. Quando chiamato, questo metodo attende che l’utente prema un tasto e restituisce un oggetto che rappresenta il tasto premuto.

Questo oggetto contiene proprietà come Character, che rappresenta il carattere Unicode del tasto premuto, e KeyDown, che indica se il tasto è stato premuto.

Questo metodo è simile al [Console]::ReadKey(). Accetta qualsiasi tasto, inclusi Ctrl, Shift, Alt e altri tasti modificatori.

Ci sono diverse opzioni ReadKeyOptions che possono essere passate nel metodo RawUI ReadKey, come IncludeKeyDown, IncludeKeyUp, NoEcho e AllowCtrlC.

Esempio:

$keyInfo = $Host.UI.RawUI.ReadKey()

In questo esempio, utilizziamo $Host.UI.RawUI.ReadKey() per catturare il tasto premuto dall’utente e memorizzarlo nella variabile $keyInfo. Questo metodo attende che l’utente prema un tasto e restituisce un oggetto che rappresenta il tasto premuto.

L’oggetto $keyInfo contiene proprietà come Character (che rappresenta il carattere del tasto premuto) e KeyDown (che indica se il tasto è stato premuto).

Output:

powershell premi un tasto qualsiasi per continuare - output 3

Utilizza Read-Host per abilitare il premere un tasto per continuare in PowerShell

Il cmdlet Read-Host in PowerShell è uno strumento versatile utilizzato per catturare l’input dell’utente dalla finestra della console. Il suo scopo principale è visualizzare un messaggio di prompt per l’utente e attendere che immetta un valore, che viene quindi memorizzato in una variabile per ulteriori elaborazioni all’interno dello script.

Esempio:

Read-Host -Prompt "Press any key to continue"

In questo esempio, utilizziamo Read-Host con il parametro -Prompt per visualizzare il messaggio "Premi un tasto per continuare..." all’utente. Lo script sospende l’esecuzione a questo punto, aspettando che l’utente immetta qualsiasi testo seguito dal tasto Enter.

Anche se non è esattamente premere un tasto, questo metodo ottiene un risultato simile richiedendo input dell’utente prima di procedere.

Output:

powershell premi un tasto per continuare - output 4

Utilizza il comando cmd /c 'pause' per abilitare il premere un tasto per continuare in PowerShell

Nello scripting PowerShell, il metodo cmd /c 'pause' fornisce un modo semplice per sospendere l’esecuzione dello script e attendere il riconoscimento dell’utente prima di procedere ulteriormente. Questo metodo sfrutta il comando cmd per eseguire il comando di pausa dal Prompt dei comandi all’interno di uno script PowerShell.

Quando eseguito, il comando di pausa visualizza il messaggio "Premi un tasto per continuare . . ." e attende che l’utente prema un tasto prima di consentire la continuazione dell’esecuzione dello script.

Esempio:

cmd /c pause

In questo esempio, utilizziamo il comando cmd /c 'pause' per sospendere l’esecuzione dello script e attendere l’input dell’utente. Quando eseguito, la finestra del Prompt dei comandi visualizza il messaggio "Premi un tasto per continuare . . ." e attende che l’utente prema un tasto prima di consentire la continuazione dell’esecuzione dello script.

Output:

powershell premi un tasto per continuare - output 5

Utilizza timeout per abilitare il premere un tasto per continuare in PowerShell

Il comando timeout può sospendere l’esecuzione per un periodo di tempo specifico o indefinito. Puoi utilizzare l’opzione /t per specificare il tempo in secondi.

Il valore valido del timeout specificato varia da -1 a 99999.

Esempio:

timeout /t 5

In questo esempio, utilizziamo il comando timeout per sospendere l’esecuzione dello script per 5 secondi. Questo crea effettivamente un prompt per l’utente di attendere 5 secondi prima di procedere.

Output:

powershell premi un tasto per continuare - output 6

Il valore -1 viene utilizzato per sospendere l’esecuzione per un tempo infinito se non viene premuto alcun tasto.

timeout /t -1

Output:

powershell premi un tasto per continuare - output 7

Conclusione

Implementare la funzionalità premere un tasto per continuare negli script PowerShell è essenziale per creare applicazioni interattive e user-friendly da riga di comando. Utilizzando metodi come [System.Console]::ReadKey(), [Console]::ReadKey(), Read-Host, cmd /c 'pause', timeout, e WScript.Shell Popup, gli autori degli script possono fornire all’utente chiari prompt e sospendere l’esecuzione fino al riconoscimento da parte dell’utente.

Ogni metodo offre capacità uniche e può essere personalizzato per soddisfare requisiti specifici, garantendo un’esperienza utente senza soluzione di continuità e un’interattività migliorata dello script. Che si tratti di visualizzare messaggi informativi, confermare azioni o creare utilità interattive, PowerShell offre strumenti versatili per soddisfare le diverse esigenze di scripting.

Ti piacciono i nostri tutorial? Iscriviti a DelftStack su YouTube per aiutarci a creare altre guide video di alta qualità. Iscriviti
Rohan Timalsina avatar Rohan Timalsina avatar

Rohan is a learner, problem solver, and web developer. He loves to write and share his understanding.

LinkedIn Website