次の方法で共有


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" 入力メカニズムの代わりにその関数を呼び出します。

参照