PowerShell でプロンプトを確認する方法

  1. PowerShell の確認プロンプトに -Confirm スイッチを使用する
  2. PowerShell の確認プロンプトに if ステートメントを使用する
  3. PowerShell の確認プロンプトに PromptForChoice() メソッドを使用する
  4. PowerShell の確認プロンプトに関する関数ベースのアプローチを使用する
  5. 結論
PowerShell でプロンプトを確認する方法

確認プロンプトの一般的なアイデアは、異なるアクション間で切り替えるオプションを作成することです。たとえば、ユーザーが「はい」を選択した場合、スクリプトは続行し、ユーザーが「いいえ」を選択した場合、スクリプトは終了する必要があります。

PowerShell は、アクションを実行する前に自動的にユーザーに確認を求めることができます。これには -Confirm スイッチを使用します。このチュートリアルでは、PowerShell でアクションを続行するためにユーザーに確認を求めるさまざまな方法を紹介します。

PowerShell の確認プロンプトに -Confirm スイッチを使用する

PowerShell には、動作環境に影響を与え、その動作をカスタマイズできる一連の設定変数があります。$ConfirmPreference は、PowerShell が cmdlet または関数を実行する前に自動的に確認を要求するかどうかを決定する設定変数の一つです。

これは、リスクが低い、中程度の、高い cmdlet または関数を実行する前に確認を促すのに役立ちます。ほとんどの cmdlet および関数は中程度のリスクであるため、変数の値が「高」に設定されている場合、確認を求めません。

$ConfirmPreference

出力:

High

ユーザーに確認を促すには、コマンドに -Confirm スイッチを使用する必要があります。これにより、PowerShell で確認プロンプトが表示されるようになります。

-Confirm スイッチを使用する簡単な方法は、確認アクションをより簡単なコマンドで生成できる Remove-Itemcmdlet に使用することです。以下のコマンドは、使用例を示しています。

コマンド:

Remove-Item test.txt -Confirm

出力:

Confirm
Are you sure you want to perform this action?
Performing the operation "Remove File" on target "C:\Users\rhntm\test.txt".
[Y] Yes  [A] Yes to All  [N] No  [L] No to All  [S] Suspend  [?] Help (default is "Y"): N

出力では、-Confirm スイッチが PowerShell に確認プロンプトを表示させます。この方法は単純で、ユーザーに「はい」または「いいえ」の確認を促したいシナリオに最適です。

PowerShell の GUI では、次のように表示されます。

PowerShell のスイッチプロンプトを確認する

PowerShell の確認プロンプトに if ステートメントを使用する

また、if ステートメントを使用して、ユーザーが続行する条件を提供することもできます。たとえば、次のコマンドはユーザーに続行するかどうか確認を求めます。

コマンド:

$confirmation = Read-Host "Do you want to continue?"
if ($confirmation -eq 'y') {
    Write-Host "Welcome to DelftStack."
}

出力:

Do you want to continue?: y
Welcome to DelftStack.

Read-Host cmdlet は、ユーザーからの入力を読み取り、入力を変数 $confirmation に保存するために使用されます。if ステートメントは、ユーザーの入力($confirmation)が「y」と等しいかどうかをチェックし、もし真であれば指定されたアクションを実行します。

このアプローチでは、ユーザーに表示されるメッセージをカスタマイズし、ユーザーが選択した場合に何が起こるかについての追加オプションを提供します。

PowerShell の確認プロンプトに PromptForChoice() メソッドを使用する

PowerShell では、PromptForChoice() メソッドを使用して、ユーザーに確認を求めることもできます。これにより、ユーザーは選択肢の中から 1つのオプションを選択し、その選択に応じてアクションを進めることができます。

次のコマンドは、ユーザーに「はい/いいえ」の入力を促す例です。確認プロンプトのために $title$question、および $choices を定義します。

コマンド:

$title = 'Confirm'
$question = 'Do you want to continue?'
$choices = '&Yes', '&No'

$decision = $Host.UI.PromptForChoice($title, $question, $choices, 1)
if ($decision -eq 0) {
    Write-Host 'Your choice is Yes.'
}
else {
    Write-Host 'Your choice is No.'
}

このコード行 $decision = $Host.UI.PromptForChoice($title, $question, $choices, 1) は、PromptForChoice() メソッドを使用してユーザーにダイアログボックスを表示します。if ステートメントでは、$decision 変数に保存された値が 0$choices 配列の最初の選択肢のインデックス)と等しいかどうかをチェックします。

1 回目の出力:

Confirm
Do you want to continue?
[Y] Yes  [N] No  [?] Help (default is "N"): Yes
Your choice is Yes.

1 回目の出力では、ユーザーが「はい」を選択します。その結果、出力に「Your choice is Yes.」が表示されます。

2 回目の出力:

Confirm
Do you want to continue?
[Y] Yes  [N] No  [?] Help (default is "N"): No
Your choice is No.

2 回目の出力では、ユーザーが「いいえ」を選択し、かっこ内の 2 番目のコマンドが実行されます。したがって、「Your choice is No.」が表示されます。

この方法は、よりインタラクティブでカスタマイズ可能な確認体験を提供し、複雑なシナリオに適しています。

上記のスクリプトを PowerShell の GUI バージョンで実行すると、確認ダイアログボックスを見ることができます。

PromptForChoice 確認プロンプト in PowerShell

PowerShell の確認プロンプトに関する関数ベースのアプローチを使用する

ユーザー確認ロジックを含むカスタム PowerShell 関数を作成できます。これにより、確認ロジックを関数内にカプセル化し、スクリプト全体で再利用することができます。

コマンド:

Function Confirm-Action {
    param (
        [string]$Message,
        [scriptblock]$Action
    )
    $confirmation = Read-Host $Message
    if ($confirmation -eq 'y') {
        & $Action
    }
}

Confirm-Action -Message "Do you want to continue?" -Action {
    Write-Host "Action executed."
}

Function Confirm-Action { ... } 行は、Confirm-Action という名前の PowerShell 関数を定義します。この関数は、2つのパラメータ $Message$Action を取ります。

この行 $confirmation = Read-Host $Message は、Read-Host cmdlet を使用してユーザーに入力を促し、その入力を変数 $confirmation に保存します。$Message パラメータは、ユーザーに表示されるメッセージを指定します。

if ステートメントは、$confirmation に保存されたユーザーの入力が文字「y」と等しいかどうかをチェックします。

出力:

Do you want to continue?: y
Action executed.

このコマンドを実行すると、ユーザーに確認を促す(「続行しますか?」)メッセージが表示され、ユーザーが「y」を選択した場合に「Action Executed」というメッセージでアクションが実行されます。

結論

PowerShell において、確認プロンプトはユーザーのコントロールと安全性にとって重要です。本記事では、確認プロンプトを実装するための 4つの方法を探求しました。-Confirm スイッチは基本的な「はい/いいえ」プロンプトを簡素化し、Read-Host を使用した if ステートメントはカスタマイズを可能にし、PromptForChoice() メソッドは高度なインタラクティブなオプションを提供し、確認ロジックを含むカスタム関数を作成することで、スクリプト内で効率的かつ安全なユーザーインタラクションを確保します。

このチュートリアルが、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