業務改善!Windows PowerShell入門

Windows PowerShellで、とにかく楽をしたい!実際に仕事で楽になった事、便利になった事を紹介しつつ進めていきます。

PowerShell 続・メッセージボックスを使い倒せ!


 

好評記事であるPowerShellによるメッセージボックスについて、再びお送りしたい。
今回で第3弾である。

 

▼第1弾、第2弾の記事はこちら

PowerShell メッセージボックスを表示しろ! - 業務改善!Windows PowerShell入門

PowerShell メッセージボックスを使い倒せ! - 業務改善!Windows PowerShell入門

 

さて、気になる今回は、.NET Framework様にお世話になり、実装をしたい。

どうやって実装するんや?!

.NET Framework様にお世話になるにしても、いきなりメッセージボックスを叩き込むことは残念ながらできない。
よって、事前準備が必要となる。
といっても、これまでの記事で何度も登場してきた、アセンブリのロード」というやつをやるだけだ。


こいつは絶対忘れずやろうゼ! 

 

Add-Type -AssemblyName System.Windows.Forms

 

これさえやっておけば、あとは、System.Windows.Forms名前空間におけるMessageBoxクラスを利用して、メッセージボックスを叩き込むだけである。

ではさっそく、サンプルスクリプトといきたい。

 

#アセンブリのロード
Add-Type -AssemblyName System.Windows.Forms

#実行確認
$result = [System.Windows.Forms.MessageBox]::Show("実行するけ?","確認","YesNo","Question","Button2")

#結果表示
If($result -eq "Yes"){
	[void][System.Windows.Forms.MessageBox]::Show("Yesが押されたゼ!","結果","OK","Information")
}Else{
	[void][System.Windows.Forms.MessageBox]::Show("Noが押されたゼ!","結果","OK","Information")
}

Read-Host "×ボタンで終了"    

 

 

f:id:acoustic_groove:20180129232904p:plain

 

f:id:acoustic_groove:20180129232953p:plain

 

f:id:acoustic_groove:20180129233043p:plain

 


 


 

実行確認で、ユーザに「はい」or「いいえ」を選択させている。

戻り値が取得できるので、結果表示の際に処理分岐が可能である。

[void]を頭につけているのは、コンソールに余分な出力をしないためである。

[void]をつけないと、コンソールにOKと出力されてしまう。 

 

MessageBoxクラスの引数

以下にまとめた。

 

▼引数の内容

  内容
引数1 メッセージ内容
引数2 タイトル
引数3 表示するボタン
引数4 表示するアイコン
引数5 引数3の初期フォーカスボタン

 

※初期フォーカスボタンを「はい」にしたい場合は、Button1とすれば、良い。

 

 

表示するボタンの設定値について

  設定値
OK OK
OK、キャンセル OKCancel
中止、再試行、無視 AbortRetryIgnore
はい、いいえ、キャンセル YesNoCancel
はい、いいえ YesNo
再試行、キャンセル RetryCancel

 

 

表示するアイコンについて

  設定値
表示なし None
×マーク Error
?マーク Question
!マーク Exclamation
iマーク Information

  

静的メソッドとは?!

これまで色々投稿した記事では、アセンブリをロードしたあと、.NET FrameworkのクラスをNew-Objectコマンドレットを使って、インスタンスを作成することが多かった。

 

しかし、今回の記事ではどうか?!

以下のような形式になっている。

 

[クラス名]::メソッド名


このような形式のものを、静的メソッド(Staticメソッド)と呼ぶ。
つまり、MessageBoxクラスは、静的メソッドである。
MessageBoxクラスは、メソッドおよびプロパティが収められている参照用のライブラリである。

 

よって、クラスを参照するだけであり、作成、破棄、変更はされない。

以上より、MessageBoxクラスのメソッドやプロパティは、オブジェクトを作成せずにアクセスすることができる。

 
さてさて、メッセージボックスというのは面白いな。
プログラミングの基本となるものゆえに、とにかく使い倒しまくろうゼ!

PowerShell、イエーイ!