次の方法で共有


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

参照