about_PSConsoleHostReadLine

Aggiornamento: maggio 2014

Si applica a: Windows PowerShell 4.0, Windows PowerShell 5.0

ARGOMENTO

about_PSConsoleHostReadLine

DESCRIZIONE BREVE

Questo articolo spiega come un Windows PowerShell personalizzato legge gli input nel pompt della console.

DESCRIZIONE LUNGA

A partire da Windows PowerShell V3, è possibile scrivere una funzione denominata PSConsoleHostReadLine che sostituisce il modo predefinito in cui gli input della console vengono elaborati.

ESEMPI

Nell'esempio seguente viene avviato il Blocco note e vengono visualizzati gli input da un file di testo creato dall'utente:

         function PSConsoleHostReadLine
         {
             $inputFile = Join-Path $env:TEMP PSConsoleHostReadLine
             Set-Content $inputFile "PS > "
 
             ## Notepad opens. Enter your command in it, save the file,
             ## and then exit.
             notepad $inputFile | Out-Null
             $userInput = Get-Content $inputFile
             $resultingCommand = $userInput.Replace("PS >", "")
             $resultingCommand
         }

OSSERVAZIONI

Per impostazione predefinita Windows PowerShell legge gli input della console nella cosiddetta "modalità Cooked". Tale modalità prevede che il sottosistema della console Windows gestica tutte le pressioni dei tasti, i menu del tasto F7 e altri input. Quando si preme INVIO o Tab, Windows PowerShell visualizza il testo digitato fino a quel momento. Non esiste alcun modo per sapere se è stato premuto Ctrl-R, Ctrl-A, Ctrl-E o qualsiasi altro tasto prima di aver selezionato INVIO o Tab. Nella versione 3 di Windows PowerShell, la funzione PSConsoleHostReadLine risolve questo problema. Quando si definisce una funzione denominata PSConsoleHostReadline nell'host della console di Windows PowerShell, Windows PowerShell chiama tale funzione anziché il meccanismo di input in "modalità Cooked".

VEDERE ANCHE

about_Prompts