【PowerShell】MessageBoxを使用する


この記事はプロモーションを含みます。

PowerShell

ホーム > PowerShell 逆引きリファレンス

PowerShellでMessageBox(メッセージボックス)を使用して、メッセージを表示させる方法を解説します。
また、ユーザーの選択に応じた戻り値を取得し、条件分岐を行うサンプルもご紹介します。

書式

メッセージボックスを使用する際の書式になります。

# アセンブリのロード
Add-Type -Assembly System.Windows.Forms
# メッセージボックスの表示
[System.Windows.Forms.MessageBox]::Show("①", "②", "③", "④", "⑤")

1行目の記述は、PowerShellでメッセージボックスを使用する際に必須となる記述です。
.NET Frameworkライブラリのロード処理となっており、1度記述しておけば以降は不要です。

2行目の記述は、メッセージボックスを表示させる処理の本体となっています。
各引数の内容は以下の通りです。

引数の番号引数の順番内容
第一引数メッセージボックスに表示するメッセージ(文字列)
第二引数メッセージボックスのタイトル
第三引数メッセージボックスのボタン
第四引数メッセージボックスのアイコン
第五引数第三引数で指定したボタンのうち、デフォルトで選択状態とするボタン

第三引数「メッセージボックスのボタン」は、以下のものが使用可能です。

項番設定値説明
1OK[OK]ボタンのみ(既定値)
2OKCancel[OK] [キャンセル]
3AbortRetryIgnore[中止] [再試行] [無視]
4YesNoCancel[はい] [いいえ] [キャンセル]
5YesNo[はい] [いいえ]
6RetryCancel[再試行] [キャンセル]

第四引数「メッセージボックスのアイコン」は、以下のものが使用可能です。

項番設定値説明
1Noneアイコン無し(既定値)
2Hand×マーク(エラー音あり)
3Error同上
4Stop同上
5Question?マーク
6Exclamation黄色の!マーク(警告音あり)
7Warning同上
8Asterisk青色の!マーク(警告音あり)
9Information同上

第五引数「デフォルトで選択状態とするボタン」は、以下のように指定します。
(3ボタン構成の場合は下記のように指定します。2ボタン構成で[button3]を指定すると、存在しないボタンが指定されているためエラーとなるので注意が必要です)

項番設定値内容
1button1一番左のボタン
2button2真ん中のボタン
3button3一番右のボタン
4button4指定禁止(メッセージボックスのボタンは最大3つなのでエラーとなります。)

サンプル

PowerShellスクリプトと実際に表示されるメッセージボックスのサンプルになります。

サンプル1

OKボタンのみのシンプルなメッセージボックスです。

Add-Type -Assembly System.Windows.Forms
[System.Windows.Forms.MessageBox]::Show("メッセージ", "タイトル", "OK")

サンプル2

ボタンが「[中止] [再試行] [無視]」、アイコンが青色!マークで、デフォルトで選択されているボタンが「ボタン2=再試行」となっているメッセージボックスです。

Add-Type -Assembly System.Windows.Forms
[System.Windows.Forms.MessageBox]::Show("メッセージ", "タイトル", "AbortRetryIgnore", "Information", "button2")

戻り値を取得して条件分岐させる

メッセージボックスはボタン毎に異なる戻り値が設定されています。
これを利用し、ユーザーが選択したボタンによって、異なる処理を実行させることが可能です。

下記がサンプルのスクリプトです。
これを実行すると、「はい」と「いいえ」の2つのボタンがあるメッセージボックスが表示されます。
それぞれのボタンをクリックすることで、下記のようにそれぞれに対応したメッセージボックスが表示され、クリックしたボタンによって別の処理が実行されていることが分かります。

「はい」をクリック →「【はい】がクリックされました。」と表示される。
「いいえ」をクリック →「【いいえ】がクリックされました。」と表示される。

Add-Type -Assembly System.Windows.Forms

$DialogResult = [System.Windows.Forms.MessageBox]::Show("メッセージ", "タイトル", "YesNo", "Information")

Switch ($DialogResult){
	{$_ -eq [System.Windows.Forms.DialogResult]::None}{
		break
	}
	{$_ -eq [System.Windows.Forms.DialogResult]::OK}{
		[System.Windows.Forms.MessageBox]::Show("【OK】がクリックされました。", "【OK】", "OK", "Information")
		break
	}
	{$_ -eq [System.Windows.Forms.DialogResult]::Cancel}{
		[System.Windows.Forms.MessageBox]::Show("【キャンセル】がクリックされました。", "【キャンセル】", "OK", "Information")
		break
	}
	{$_ -eq [System.Windows.Forms.DialogResult]::Abort}{
		[System.Windows.Forms.MessageBox]::Show("【中止】がクリックされました。", "【中止】", "OK", "Information")
		break
	}
	{$_ -eq [System.Windows.Forms.DialogResult]::Retry}{
		[System.Windows.Forms.MessageBox]::Show("【再試行】がクリックされました。", "【再試行】", "OK", "Information")
		break
	}
	{$_ -eq [System.Windows.Forms.DialogResult]::Ignore}{
		[System.Windows.Forms.MessageBox]::Show("【無視】がクリックされました。", "【無視】", "OK", "Information")
		break
	}
	{$_ -eq [System.Windows.Forms.DialogResult]::Yes}{
		[System.Windows.Forms.MessageBox]::Show("【はい】がクリックされました。", "【はい】", "OK", "Information")
		break
	}
	{$_ -eq [System.Windows.Forms.DialogResult]::No}{
		[System.Windows.Forms.MessageBox]::Show("【いいえ】がクリックされました。", "【いいえ】", "OK", "Information")
		break
	}
}

記事は以上です。デバッグなどにも大活躍のメッセージボックスがPowerShellでも簡単に使用出来ます。是非ご活用ください。

コメント

タイトルとURLをコピーしました