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" 入力メカニズムの代わりにその関数を呼び出します。
参照
GitHub で Microsoft と共同作業する
このコンテンツのソースは GitHub にあります。そこで、issue や pull request を作成および確認することもできます。 詳細については、共同作成者ガイドを参照してください。
PowerShell