PowerShell で「続行するには任意のキーを押してください」と表示する方法
-
PowerShell で
任意のキーを押してください
を有効にするためにReadKey (System.Console)
を使用する -
PowerShell で
任意のキーを押してください
を有効にするためにReadKey (Console)
を使用する -
PowerShell で
任意のキーを押してください
を有効にするためにReadKey (RawUI)
を使用する -
PowerShell で
任意のキーを押してください
を有効にするためにRead-Host
を使用する -
PowerShell で
任意のキーを押してください
を有効にするためにcmd /c 'pause'
コマンドを使用する -
PowerShell で
任意のキーを押してください
を有効にするためにtimeout
を使用する - 結論

PowerShell スクリプトにおいて、任意のキーを押してください
機能を有効にすることはよくある要件であり、特に対話型コマンドラインアプリケーションを作成する際やユーザーにフィードバックを提供する際に重要です。この機能を達成するための方法はいくつかあり、それぞれに利点と使用ケースがあります。
この記事では、PowerShell スクリプトにおける任意のキーを押してください
機能を実装するさまざまな方法を探ります。ビルトインの cmdlet から外部コマンドや COM オブジェクトを利用する方法まで幅広く紹介します。
PowerShell で任意のキーを押してください
を有効にするために ReadKey (System.Console)
を使用する
PowerShell の [System.Console]::ReadKey()
メソッドは、ユーザーが押した次のキーまたはファンクションキーを標準入力ストリーム(通常はキーボード)から読み取るために使用されます。引数なしで呼び出すと、このメソッドはユーザーがキーを押すのを待ち、押されたキーを表す型 [System.ConsoleKeyInfo]
のオブジェクトを返します。
System.Console ReadKey
は次のように実行できます。Shift、Alt、Ctrl、およびその他の修飾キーを除く、任意のキーを受け付けます。
$keyInfo = [System.Console]::ReadKey($true)
Write-Host "Key Pressed: $($keyInfo.KeyChar)"
コード行 $keyInfo = [System.Console]::ReadKey($true)
では、ユーザー入力をキャプチャするために [System.Console]::ReadKey()
メソッドを利用しています。引数として $true
を渡すことで、押されたキーがコンソールウィンドウに表示されないことを示します。
これにより、コンソールが不要な文字で散らかるのを防ぎ、クリーンなユーザーエクスペリエンスを提供します。$keyInfo
の出力を表示するためには、ドット表記を使用してそのプロパティにアクセスできます。
出力:
PowerShell で任意のキーを押してください
を有効にするために ReadKey (Console)
を使用する
[Console]::ReadKey()
を使用して PowerShell で任意のキーを押してください
を有効にすることができます。これにより、キーと修飾キーを読み取りながら、実行を一時停止することができます。Shift、Alt、Ctrl、およびその他の修飾キーは除外されます。
$keyInfo = [Console]::ReadKey()
コード行 $keyInfo = [Console]::ReadKey()
では、ユーザー入力をキャプチャするために [Console]::ReadKey()
メソッドを利用しています。このメソッドは、ユーザーがキーを押すのを待ち、押されたキーを表すオブジェクトを返し、それを変数 $keyInfo
に格納します。
出力:
PowerShell で任意のキーを押してください
を有効にするために ReadKey (RawUI)
を使用する
PowerShell の $Host.UI.RawUI.ReadKey()
メソッドは、コンソール入力からユーザーが押した次のキーまたはファンクションキーを読み取るために使用されます。呼び出されると、このメソッドはユーザーがキーを押すのを待ち、押されたキーを表すオブジェクトを返します。
このオブジェクトには、押されたキーの Unicode 文字を表す Character
や、キーが押されたかどうかを示す KeyDown
などのプロパティが含まれています。
このメソッドは [Console]::ReadKey()
と似ています。Ctrl、Shift、Alt、およびその他の修飾キーを含む、任意のキーを受け付けます。
RawUI ReadKey
メソッドには、IncludeKeyDown
、IncludeKeyUp
、NoEcho
、AllowCtrlC
など、異なる ReadKeyOptions
を渡すことができます。
例:
$keyInfo = $Host.UI.RawUI.ReadKey()
この例では、$Host.UI.RawUI.ReadKey()
を使用してユーザーが押したキーをキャプチャし、それを $keyInfo
変数に格納します。このメソッドは、ユーザーがキーを押すのを待ち、押されたキーを表すオブジェクトを返します。
$keyInfo
オブジェクトには、押されたキーの文字を表す Character
や、キーが押されたかどうかを示す KeyDown
などのプロパティが含まれています。
出力:
PowerShell で任意のキーを押してください
を有効にするために Read-Host
を使用する
PowerShell の Read-Host
cmdlet は、コンソールウィンドウからユーザー入力をキャプチャするための多目的ツールです。その主な目的は、ユーザーにプロンプトメッセージを表示し、値の入力を待つことであり、その後、スクリプト内でさらに処理するために変数に保存されます。
例:
Read-Host -Prompt "Press any key to continue"
この例では、-Prompt
パラメータを使用して"任意のキーを押してください..."
というメッセージをユーザーに表示するために Read-Host
を使用しています。この時点でスクリプトの実行が一時停止し、ユーザーが任意のテキストを入力してEnterキーを押すのを待ちます。
正確には任意のキーを押してください
ではありませんが、この方法は進む前にユーザー入力を必要とすることで似たような結果を達成します。
出力:
PowerShell で任意のキーを押してください
を有効にするために cmd /c 'pause'
コマンドを使用する
PowerShell スクリプトにおいて、cmd /c 'pause'
メソッドはスクリプトの実行を一時停止し、次に進む前にユーザーの確認を待つためのシンプルな方法を提供します。このメソッドは、PowerShell スクリプト内でコマンドプロンプトからの停止コマンドを実行するために cmd
コマンドを利用します。
実行されると、停止コマンドは"任意のキーを押してください . . ."
というメッセージを表示し、ユーザーが任意のキーを押すのを待ってからスクリプトの実行を続行します。
例:
cmd /c pause
この例では、cmd /c 'pause'
コマンドを使用してスクリプトの実行を一時停止し、ユーザー入力を待ちます。実行されると、コマンドプロンプトウィンドウに"任意のキーを押してください . . ."
というメッセージが表示され、ユーザーが任意のキーを押すまで待機し、その後スクリプトの続きを実行します。
出力:
PowerShell で任意のキーを押してください
を有効にするために timeout
を使用する
timeout
コマンドは、特定の期間または無制限の時間、実行を一時停止することができます。/t
オプションを使用して、秒数で時間を指定できます。
指定されたタイムアウトの有効値は -1
から 99999
の範囲です。
例:
timeout /t 5
この例では、timeout
コマンドを使用してスクリプトの実行を 5 秒間一時停止します。これにより、ユーザーが続行する前に 5 秒間待つように促されます。
出力:
-1
の値は、キーが押されない場合に無限の時間、実行を一時停止するために使用されます。
timeout /t -1
出力:
結論
PowerShell スクリプトにおいて任意のキーを押してください
機能を実装することは、対話型でユーザーフレンドリーなコマンドラインアプリケーションを作成するために不可欠です。[System.Console]::ReadKey()
、[Console]::ReadKey()
、Read-Host
、cmd /c 'pause'
、timeout
、および WScript.Shell Popup
などの方法を利用することで、スクリプト作成者はユーザーに明確なプロンプトを提供し、ユーザーの確認まで実行を一時停止することができます。
各メソッドはユニークな機能を提供し、特定の要件に応じて調整することができ、シームレスなユーザーエクスペリエンスと向上したスクリプトのインタラクティビティを保証します。有益なメッセージを表示したり、アクションを確認したり、対話型ユーティリティを作成したりする際に、PowerShell は多様なスクリプティングニーズに応えるための柔軟なツールを提供します。