about_PSConsoleHostReadLine

简短说明

介绍如何在控制台提示符下创建自定义 PowerShell 如何读取输入。

长说明

从 Windows PowerShell 3.0 开始,你可以编写名为 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
}

REMARKS

默认情况下,PowerShell 从控制台读取称为“Cooked Mode”的输入,其中,Windows 控制台子系统处理所有按键事件、F7 菜单和其他输入。 按 Enter 或 Tab 时,PowerShell 将获取所键入的文本,直到该点。 在按 Enter 或 Tab 之前,无法知道你已按下 Ctrl-R、Ctrl-A、Ctrl-E 或任何其他键。在 Windows PowerShell 3.0 中,PSConsoleHostReadLine 函数解决了此问题。 当你在 PowerShell 控制台主机中定义名为 PSConsoleHostReadline 的函数时,PowerShell 将调用该函数而非调用“Cooked Mode”输入机制。

另请参阅