about_PSConsoleHostReadLine
Descripción breve
Explica cómo personalizar la forma en que PowerShell lee la entrada en el símbolo del sistema de consola.
Descripción larga
A partir de Windows PowerShell 3.0, puede escribir una función denominada PSConsoleHostReadLine
que invalide la forma predeterminada en que se procesa la entrada de la consola.
Este módulo PSReadLine extiende esta función.
Ejemplos
En el ejemplo siguiente se inicia el Bloc de notas y se obtiene la entrada de un archivo de texto que crea el usuario:
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
}
Observaciones
De forma predeterminada, PowerShell lee la entrada desde la consola en lo que se conoce como "Modo preparado", en el cual el subsistema de la consola de Windows gestiona todas las pulsaciones de teclas, los menús, como F7, y otros tipos de entrada. Al presionar Enter o Tab, PowerShell recibe el texto que ha escrito hasta ese punto.
No hay forma de saber que presionaste Ctrl+R, Ctrl+A, Ctrl+Eo cualquier otra tecla antes de presionar Entrar o Tab. En Windows PowerShell 3.0, la función PSConsoleHostReadLine
resuelve este problema. Al definir una función denominada PSConsoleHostReadline
en el host de consola de PowerShell, PowerShell llama a esa función en lugar del mecanismo de entrada "Modo cocinado".
Consulte también
- about_Prompts
- PSConsoleHostReadLine
- Modos de Consola High-Level