about_PSConsoleHostReadLine

Krótki opis

W tym artykule wyjaśniono, jak utworzyć dostosowywanie sposobu odczytywania danych wejściowych przez program PowerShell w wierszu polecenia konsoli.

Długi opis

Począwszy od programu Windows PowerShell 3.0, można napisać funkcję o nazwie PSConsoleHostReadLine, która zastępuje domyślny sposób przetwarzania danych wejściowych konsoli.

PRZYKŁADY

Poniższy przykład uruchamia Notatnik i pobiera dane wejściowe z pliku tekstowego tworzonego przez użytkownika:

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
}

UWAGI

Domyślnie program PowerShell odczytuje dane wejściowe z konsoli programu w trybie gotowanym — w którym podsystem konsoli systemu Windows obsługuje wszystkie klawiatury, menu F7 i inne dane wejściowe. Po naciśnięciu klawisza Enter lub klawisza Tab program PowerShell pobiera tekst wpisany do tego momentu. Nie ma możliwości, aby wiedzieć, że naciśnięcie klawiszy Ctrl-R, Ctrl-A, Ctrl-E lub innych klawiszy przed naciśnięciem klawisza Enter lub Tab. W programie Windows PowerShell 3.0 funkcja PSConsoleHostReadLine rozwiązuje ten problem. Podczas definiowania funkcji o nazwie PSConsoleHostReadline na hoście konsoli programu PowerShell program PowerShell wywołuje tę funkcję zamiast mechanizmu wprowadzania "Tryb gotowany".

Zobacz też