SEブログ

【PowerShell】メッセージボックスを表示する

 

こんにちは!SE ブログの相馬です。

 

 

今まで PowerShell で記事を書いてきましたが、画面に表示する処理ができる事を知りませんでした。私が知っている PowerShell でできる事といえば、主にサーバーの管理だと思っていましたので。PowerShell から .NET Frameworkライブラリを使用することが可能なので、画面に表示させたりする事ができるそうです。

 

 

もちろんサーバーの管理としても使えると思いますけど、GUI でシステム管理者やユーザーに操作させたい時に非常に便利ですね。様々な用途で活躍すると思うので、これは是非とも理解しておくべき機能だなと思い、また面白そうだなと思い、色々いじってみようと思います。

 

 

という事でまずは Hello と出してみましょう。

 

[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’ となります。

 

[System.Windows.MessageBox]::Show('本当に実行して良いですか?','アプリの実行確認','YesNoCancel','Error')


# 実行結果

Yes

 

 

 

 

 

 

それでは、ボタンを押した後に結果も表示してみます。今回は選択肢として [はい] と [いいえ] だけにしました。

 

$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 から使用できるようにする必要があります。

 

 

ロード済みのアセンブリを確認するには下記のように入力します。

 

[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 でユーザーに操作させたい時に非常に便利ですね。選択肢をクリックしてもらい結果の値に応じて処理を変える事ができるので面白いです。

 

 

では最後までお読みいただきありがとうございました!