Share via


about_PSConsoleHostReadLine

Descripción breve

Explica cómo crear una personalización de cómo PowerShell lee la entrada en el símbolo del sistema de la 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.

EJEMPLOS

En el ejemplo siguiente se inicia 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
}

COMENTARIOS

De forma predeterminada, PowerShell lee la entrada de la consola en lo que se conoce como "Modo cocinado", en el que el subsistema de la consola de Windows controla todas las teclas, menús F7 y otra entrada. Al presionar Entrar o Tab, PowerShell obtiene el texto que ha escrito hasta ese punto. No hay forma de saber que presionaste Ctrl-R, Ctrl-A, Ctrl-E o 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 la consola de PowerShell, PowerShell llama a esa función en lugar del mecanismo de entrada "Modo preparado".

Consulte también