about_PSConsoleHostReadLine

簡単な説明

コンソール プロンプトで PowerShell が入力を読み取る方法をカスタマイズする方法について説明します。

長い説明

Windows PowerShell 3.0 から、コンソール入力が処理される既定の方法をオーバーライドする PSConsoleHostReadLine という名前の関数を記述できます。

EXAMPLES

次の例では、メモ帳を起動し、ユーザーが作成したテキスト ファイルから入力を取得します。

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 キー、または他のキーを押したと知る方法はありません。3.0 Windows PowerShellでは、PSConsoleHostReadLine 関数によってこの問題が解決されます。 PowerShell コンソール ホストで PSConsoleHostReadline という名前の関数を定義すると、PowerShell は "Cooked Mode" 入力メカニズムではなく、その関数を呼び出します。

参照