about_PSConsoleHostReadLine

トピック

about_PSConsoleHostReadLine

簡単な説明

コンソールのプロンプトで Windows PowerShell がどのように入力を読み取るかをカスタマイズする方法を説明します。

詳細な説明

Windows PowerShell V3 から、コンソールへの入力の既定の処理方法に優先する 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
         }

注釈

既定では Windows PowerShell は、"Cooked 入力モード" として知られる、Windows コンソールのサブシステムがすべてのキーボード入力、F7 メニューの使用、およびその他すべての入力を処理するモードで、コンソールから入力を読み取ります。Enter キーまたは Tab キーを押すと、Windows PowerShell がそれまで入力したテキストを取得します。Enter キーまたは Tab キーを押す前に、Ctrl-R、Ctrl-A、Ctrl-E、またはその他のキーを押したことを確認する方法はありません。 Windows PowerShell バージョン 3 では、PSConsoleHostReadLine 関数を使ってこの問題を解決しています。Windows PowerShell コンソール ホストで PSConsoleHostReadline 関数を定義すると、Windows PowerShell "Cooked 入力モード" の入力メカニズムの代わりにその関数を呼び出します。

関連項目

about_Prompts