Share via


about_PSConsoleHostReadLine

Descrizione breve

Viene illustrato come creare una personalizzazione del modo in cui PowerShell legge l'input al prompt della console.

Descrizione lunga

A partire da Windows PowerShell V3, è possibile scrivere una funzione denominata PSConsoleHostReadLine che esegue l'override del modo predefinito in cui viene elaborato l'input della console.

ESEMPI

L'esempio seguente avvia Blocco note e ottiene l'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
}

REMARKS

Per impostazione predefinita, PowerShell legge l'input dalla console in quello che è noto come "Modalità cooked", in cui il sottosistema della console di Windows gestisce tutti i tasti di scelta rapida, i menu F7 e altri input. Quando si preme INVIO o TAB, Windows PowerShell ottiene il testo digitato fino a quel punto. Non c'è modo per sapere che hai premuto CTRL-R, CTRL-A, CTRL-E o qualsiasi altro tasto prima di premere INVIO o TAB. In Windows PowerShell versione 3 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 "Cooked Mode".

Vedi anche