Partilhar via


about_PSConsoleHostReadLine

Breve descrição

Explica como personalizar a forma como o PowerShell lê a entrada no prompt do console.

Descrição longa

A partir do Windows PowerShell 3.0, você pode escrever uma função chamada PSConsoleHostReadLine que substitui a maneira padrão como a entrada do console é processada.

Esta função é estendida pelo módulo PSReadLine.

Exemplos

O exemplo a seguir inicia o Bloco de Notas e obtém entrada de um arquivo de texto criado pelo usuário:

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
}

Comentários

Por padrão, o PowerShell lê a entrada do console no que é conhecido como "Cooked Mode" — no qual o subsistema do console do Windows lida com todas as teclas pressionadas, menus F7 e outras entradas. Quando você pressiona Enter ou Tab, o PowerShell obtém o texto que você digitou até aquele ponto. Não há como saber que você pressionou Ctrl+R, Ctrl+A, Ctrl+E, ou qualquer outra tecla antes de pressionar Enter ou Tab. No Windows PowerShell 3.0, a função PSConsoleHostReadLine resolve esse problema. Quando você define uma função chamada PSConsoleHostReadline no host do console do PowerShell, o PowerShell chama essa função em vez do mecanismo de entrada "Modo Cozido".

Consulte Também