Warning: preg_match(): Compilation failed: unrecognized character follows \ at offset 1 in /home/r5652521/public_html/soma-engineering.com/wp-content/themes/affinger/functions.php on line 1548
Warning: preg_match(): Compilation failed: unrecognized character follows \ at offset 1 in /home/r5652521/public_html/soma-engineering.com/wp-content/themes/affinger/functions.php on line 1548
こんにちは!SE ブログの相馬です。
今まで PowerShell で記事を書いてきましたが、画面に表示する処理ができる事を知りませんでした。私が知っている PowerShell でできる事といえば、主にサーバーの管理だと思っていましたので。PowerShell から .NET Frameworkライブラリを使用することが可能なので、画面に表示させたりする事ができるそうです。
もちろんサーバーの管理としても使えると思いますけど、GUI でシステム管理者やユーザーに操作させたい時に非常に便利ですね。様々な用途で活躍すると思うので、これは是非とも理解しておくべき機能だなと思い、また面白そうだなと思い、色々いじってみようと思います。
という事でまずは Hello と出してみましょう。
1 |
[System.Windows.MessageBox]::Show('Hello') |
よく分かりませんけど、この [System.Windows] と名前空間をくっつければ上のようにメッセージボックスを表示する事ができます、
System.Windows 名前空間 | Microsoft Developers Network
ですので、[System.Windows 名前空間] で色々な事ができるようです。名前空間に MessageBox を指定し、[System.Windows.MessageBox]::Show で show メソッドを指定して、引数に Hello と表示しています。
ダイアログウィンドウのように選択肢を表示する事もできます。Yes や No を表示して、クリックした値を返り値にする事ができます。
書き方としては、[System.Windows.MessageBox]::Show('確認メッセージ','ウィンドウのタイトル','YesNoCancel','Error' となります。
1 2 3 4 5 6 |
[System.Windows.MessageBox]::Show('本当に実行して良いですか?','アプリの実行確認','YesNoCancel','Error') # 実行結果 Yes |
それでは、ボタンを押した後に結果も表示してみます。今回は選択肢として [はい] と [いいえ] だけにしました。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
$msgBoxInput = [System.Windows.MessageBox]::Show('本当に実行して良いですか?','アプリの実行確認','YesNo','Question') switch ($msgBoxInput) { 'Yes' { [System.Windows.Forms.MessageBox]::Show("アプリを削除します。","結果","OK","Information") } 'No' { [System.Windows.Forms.MessageBox]::Show("アプリを削除しません。","結果","OK","Exclamation") } } |
ダイアログウィンドウ。[はい] と [いいえ] の 2 択にしています。
[はい] を押した結果
[いいえ] を押した結果
アセンブリについて
PowerShell は .NET Framework をもとに作られているようで、デフォルトでロードしているアセンブリというものがあります。作りたい機能によってはロード済みのアセンブリだけでは足りない場合があり、こういった場合は必要なアセンブリをロードして PowerShell から使用できるようにする必要があります。
ロード済みのアセンブリを確認するには下記のように入力します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 |
[Appdomain]::CurrentDomain.GetAssemblies() | %{$_.GetName().Name} # 実行結果(アセンブリの一覧が表示されます。) mscorlib powershell_ise Microsoft.PowerShell.ISECommo System System.Windows.Forms System.Drawing System.Management.Automation System.Core System.Configuration System.Xml powershell_ise.resources Microsoft.PowerShell.GPowerShell System.ComponentModel.Composition Microsoft.PowerShell.Editor WindowsBase PresentationFramework PresentationCore System.Xaml UIAutomationProvider System.Runtime.Serialization Accessibility MetadataViewProxies_7954bf64-21a2-4c60-9441-7c62791a26f2 Microsoft.PowerShell.GPowerShell.resources System.Management System.DirectoryServices Microsoft.Management.Infrastructure PresentationCore.resources PresentationFramework.Aero2 PresentationFramework-SystemXml System.Management.Automation.resources mscorlib.resources System.Data Anonymously Hosted DynamicMethods Assembly Microsoft.PowerShell.Security System.Transactions System.Numerics Microsoft.PowerShell.GraphicalHost Microsoft.PowerShell.GraphicalHost.resources UIAutomationTypes Microsoft.GeneratedCode PresentationFramework.resources PresentationFramework-SystemData PresentationFramework-SystemCore System.resources SMDiagnostics System.ServiceModel.Internals System.RunTime.Serialization.resources Microsoft.PowerShell.Commands.Utility System.Configuration.Install Microsoft.PowerShell.Commands.Utility.resources Windows.UI System.Runtime.InteropServices.WindowsRuntime Microsoft.CSharp Microsoft.PowerShell.Commands.Management |
いかがでしょうか。GUI でユーザーに操作させたい時に非常に便利ですね。選択肢をクリックしてもらい結果の値に応じて処理を変える事ができるので面白いです。
では最後までお読みいただきありがとうございました!