Compartir a través de


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