PowerShell で「続行するには任意のキーを押してください」と表示する方法

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

PowerShell スクリプトにおいて、任意のキーを押してください機能を有効にすることはよくある要件であり、特に対話型コマンドラインアプリケーションを作成する際やユーザーにフィードバックを提供する際に重要です。この機能を達成するための方法はいくつかあり、それぞれに利点と使用ケースがあります。

この記事では、PowerShell スクリプトにおける任意のキーを押してください機能を実装するさまざまな方法を探ります。ビルトインの cmdlet から外部コマンドや COM オブジェクトを利用する方法まで幅広く紹介します。

PowerShell で任意のキーを押してくださいを有効にするために ReadKey (System.Console) を使用する

PowerShell の [System.Console]::ReadKey() メソッドは、ユーザーが押した次のキーまたはファンクションキーを標準入力ストリーム(通常はキーボード)から読み取るために使用されます。引数なしで呼び出すと、このメソッドはユーザーがキーを押すのを待ち、押されたキーを表す型 [System.ConsoleKeyInfo] のオブジェクトを返します。

System.Console ReadKey は次のように実行できます。ShiftAltCtrl、およびその他の修飾キーを除く、任意のキーを受け付けます。

$keyInfo = [System.Console]::ReadKey($true)
Write-Host "Key Pressed: $($keyInfo.KeyChar)"

コード行 $keyInfo = [System.Console]::ReadKey($true) では、ユーザー入力をキャプチャするために [System.Console]::ReadKey() メソッドを利用しています。引数として $true を渡すことで、押されたキーがコンソールウィンドウに表示されないことを示します。

これにより、コンソールが不要な文字で散らかるのを防ぎ、クリーンなユーザーエクスペリエンスを提供します。$keyInfo の出力を表示するためには、ドット表記を使用してそのプロパティにアクセスできます。

出力:

powershell キーを押して続行してください - 出力 1

PowerShell で任意のキーを押してくださいを有効にするために ReadKey (Console) を使用する

[Console]::ReadKey() を使用して PowerShell で任意のキーを押してくださいを有効にすることができます。これにより、キーと修飾キーを読み取りながら、実行を一時停止することができます。ShiftAltCtrl、およびその他の修飾キーは除外されます。

$keyInfo = [Console]::ReadKey()

コード行 $keyInfo = [Console]::ReadKey() では、ユーザー入力をキャプチャするために [Console]::ReadKey() メソッドを利用しています。このメソッドは、ユーザーがキーを押すのを待ち、押されたキーを表すオブジェクトを返し、それを変数 $keyInfo に格納します。

出力:

powershell キーを押して続行 - 出力 2

PowerShell で任意のキーを押してくださいを有効にするために ReadKey (RawUI) を使用する

PowerShell の $Host.UI.RawUI.ReadKey() メソッドは、コンソール入力からユーザーが押した次のキーまたはファンクションキーを読み取るために使用されます。呼び出されると、このメソッドはユーザーがキーを押すのを待ち、押されたキーを表すオブジェクトを返します。

このオブジェクトには、押されたキーの Unicode 文字を表す Character や、キーが押されたかどうかを示す KeyDown などのプロパティが含まれています。

このメソッドは [Console]::ReadKey() と似ています。CtrlShiftAlt、およびその他の修飾キーを含む、任意のキーを受け付けます。

RawUI ReadKey メソッドには、IncludeKeyDownIncludeKeyUpNoEchoAllowCtrlC など、異なる ReadKeyOptions を渡すことができます。

例:

$keyInfo = $Host.UI.RawUI.ReadKey()

この例では、$Host.UI.RawUI.ReadKey() を使用してユーザーが押したキーをキャプチャし、それを $keyInfo 変数に格納します。このメソッドは、ユーザーがキーを押すのを待ち、押されたキーを表すオブジェクトを返します。

$keyInfo オブジェクトには、押されたキーの文字を表す Character や、キーが押されたかどうかを示す KeyDown などのプロパティが含まれています。

出力:

パワーシェル任意のキーを押して続行 - 出力 3

PowerShell で任意のキーを押してくださいを有効にするために Read-Host を使用する

PowerShell の Read-Host cmdlet は、コンソールウィンドウからユーザー入力をキャプチャするための多目的ツールです。その主な目的は、ユーザーにプロンプトメッセージを表示し、値の入力を待つことであり、その後、スクリプト内でさらに処理するために変数に保存されます。

例:

Read-Host -Prompt "Press any key to continue"

この例では、-Prompt パラメータを使用して"任意のキーを押してください..."というメッセージをユーザーに表示するために Read-Host を使用しています。この時点でスクリプトの実行が一時停止し、ユーザーが任意のテキストを入力してEnterキーを押すのを待ちます。

正確には任意のキーを押してくださいではありませんが、この方法は進む前にユーザー入力を必要とすることで似たような結果を達成します。

出力:

ポータブルシェルいずれかのキーを押してください - 出力 4

PowerShell で任意のキーを押してくださいを有効にするために cmd /c 'pause'コマンドを使用する

PowerShell スクリプトにおいて、cmd /c 'pause'メソッドはスクリプトの実行を一時停止し、次に進む前にユーザーの確認を待つためのシンプルな方法を提供します。このメソッドは、PowerShell スクリプト内でコマンドプロンプトからの停止コマンドを実行するために cmd コマンドを利用します。

実行されると、停止コマンドは"任意のキーを押してください . . ."というメッセージを表示し、ユーザーが任意のキーを押すのを待ってからスクリプトの実行を続行します。

例:

cmd /c pause

この例では、cmd /c 'pause'コマンドを使用してスクリプトの実行を一時停止し、ユーザー入力を待ちます。実行されると、コマンドプロンプトウィンドウに"任意のキーを押してください . . ."というメッセージが表示され、ユーザーが任意のキーを押すまで待機し、その後スクリプトの続きを実行します。

出力:

ポーズシェル何かキーを押して続行 - 出力 5

PowerShell で任意のキーを押してくださいを有効にするために timeout を使用する

timeout コマンドは、特定の期間または無制限の時間、実行を一時停止することができます。/t オプションを使用して、秒数で時間を指定できます。

指定されたタイムアウトの有効値は -1 から 99999 の範囲です。

例:

timeout /t 5

この例では、timeout コマンドを使用してスクリプトの実行を 5 秒間一時停止します。これにより、ユーザーが続行する前に 5 秒間待つように促されます。

出力:

{CODE_BLOCK_8}パワーシェルキーを押して続行 - 出力 6

-1 の値は、キーが押されない場合に無限の時間、実行を一時停止するために使用されます。

timeout /t -1

出力:

パワーシェル任意のキーを押して続行 - 出力 7

結論

PowerShell スクリプトにおいて任意のキーを押してください機能を実装することは、対話型でユーザーフレンドリーなコマンドラインアプリケーションを作成するために不可欠です。[System.Console]::ReadKey()[Console]::ReadKey()Read-Hostcmd /c 'pause'timeout、および WScript.Shell Popup などの方法を利用することで、スクリプト作成者はユーザーに明確なプロンプトを提供し、ユーザーの確認まで実行を一時停止することができます。

各メソッドはユニークな機能を提供し、特定の要件に応じて調整することができ、シームレスなユーザーエクスペリエンスと向上したスクリプトのインタラクティビティを保証します。有益なメッセージを表示したり、アクションを確認したり、対話型ユーティリティを作成したりする際に、PowerShell は多様なスクリプティングニーズに応えるための柔軟なツールを提供します。

チュートリアルを楽しんでいますか? <a href="https://www.youtube.com/@delftstack/?sub_confirmation=1" style="color: #a94442; font-weight: bold; text-decoration: underline;">DelftStackをチャンネル登録</a> して、高品質な動画ガイドをさらに制作するためのサポートをお願いします。 Subscribe
著者: Rohan Timalsina
Rohan Timalsina avatar Rohan Timalsina avatar

Rohan is a learner, problem solver, and web developer. He loves to write and share his understanding.

LinkedIn Website