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”输入机制。
另请参阅
反馈
https://aka.ms/ContentUserFeedback。
即将发布:在整个 2024 年,我们将逐步淘汰作为内容反馈机制的“GitHub 问题”,并将其取代为新的反馈系统。 有关详细信息,请参阅:提交和查看相关反馈