about_PSConsoleHostReadLine
Breve descrição
Explica como criar uma personalização de 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.
EXEMPLOS
O exemplo a seguir inicia o Bloco de Notas e obtém entrada de um arquivo de texto que o usuário cria:
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 "Modo Cozido" -- 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".