Поделиться через


about_PSConsoleHostReadLine

Краткое описание

В этой статье описывается, как создать настройку операций чтения входных данных в командной строке PowerShell.

Подробное описание

Начиная с Windows PowerShell версии 3, можно написать функцию с именем PSConsoleHostReadLine, которая переопределяет способ обработки входных данных консоли по умолчанию.

Примеры

Следующий пример запускает Блокнот и получает входные данные из текстового файла, который создает пользователь:

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
}

ПРИМЕЧАНИЯ

По умолчанию PowerShell считывает входные данные из консоли в том, что называется "Режим приготовления", в котором подсистема консоли Windows обрабатывает все клавиши, меню F7 и другие входные данные. При нажатии клавиши ВВОД или ВКЛАДКа Windows PowerShell получает текст, введенный до этой точки. Нет способа знать, что вы нажимали клавиши CTRL-R, CTRL-A, CTRL-E или другие клавиши перед нажатием клавиш ВВОД или ВКЛАДКА. В Windows PowerShell версии 3 функция PSConsoleHostReadLine решает эту проблему. При определении функции с именем PSConsoleHostReadline на узле консоли Windows PowerShell Windows PowerShell вызывает эту функцию вместо механизма ввода "Режим приготовления".

См. также