PowerShellでポップアップやバルーン通知を表示する方法【初心者向け解説】
PowerShellはコンソールベースのスクリプト言語ですが、重いスクリプトの処理完了や重要なイベント発生などを、ユーザーに視覚的に通知したい場面があります。そんなときに便利なのが、ポップアップウィンドウやバルーン通知(トースト通知)の表示です。
この記事では、PowerShellスクリプトからユーザーへ通知を表示する代表的な3つの方法を、実際のコード例とともにわかりやすく解説します。
方法1:Wscript.ShellのPopupメソッドを使う
最も手軽なのは、Windows Script Host(Wscript)をCOMオブジェクトとして呼び出し、メッセージウィンドウを表示する方法です。
以下のコードを実行すると、メッセージと「OK」ボタンが付いたシンプルなダイアログが表示されます。
$wshell = New-Object -ComObject Wscript.Shell
$Output = $wshell.Popup("レポート生成スクリプトが正常に完了しました!")Popupメソッドの各プロパティを指定することで、モーダルウィンドウの見た目をカスタマイズできます。さらに、ユーザーが押したボタンの回答(はい/いいえ など)をスクリプト側で受け取ることも可能です。
$Output = $wshell.Popup("レポート生成スクリプトが正常に完了しました!画面にレポートを表示しますか?",0,"レポート準備完了",4+32)Popupメソッドの構文とパラメータ
Popup(<Text>,<SecondsToWait>,<Title>,<Type>)- <Text> — 表示するメッセージ本文(文字列)
- <SecondsToWait> — 数値(省略可)。指定秒数後にウィンドウを自動的に閉じる
- <Title> — 文字列(省略可)。ポップアップウィンドウのタイトル
- <Type> — 数値(省略可)。ボタンの種類とアイコンを決定するフラグの組み合わせ
Typeフラグに指定できる主な値
- 0 — 「OK」ボタンのみ
- 1 — 「OK」「キャンセル」ボタン
- 2 — 「中止」「再試行」「無視」ボタン
- 3 — 「はい」「いいえ」「キャンセル」ボタン
- 4 — 「はい」「いいえ」ボタン
- 5 — 「再試行」「キャンセル」ボタン
- 16 — 警告(停止)アイコン
- 32 — 問い合わせ(疑問符)アイコン
- 48 — 警告(感嘆符)アイコン
- 64 — 情報アイコン
Popupメソッドの戻り値
Popupメソッドは整数値を返し、ユーザーがどのボタンをクリックしたかを判別できます。
- -1 — タイムアウト(自動的に閉じられた)
- 1 — 「OK」ボタン
- 2 — 「キャンセル」ボタン
- 3 — 「中止」ボタン
- 4 — 「再試行」ボタン
- 5 — 「無視」ボタン
- 6 — 「はい」ボタン
- 7 — 「いいえ」ボタン
方法2:Windows Forms APIでバルーン通知を表示する
Windows 7 / 8.1 / 10では、Windows Forms APIを使うことで、より見栄えの良いバルーン通知(ポップアップメッセージ)を表示できます。以下のコードは、Windows 10の通知領域の近くにバルーンを表示し、20秒後に自動的に消える例です。
Add-Type -AssemblyName System.Windows.Forms
$global:balmsg = New-Object System.Windows.Forms.NotifyIcon
$path = (Get-Process -id $pid).Path
$balmsg.Icon = [System.Drawing.Icon]::ExtractAssociatedIcon($path)
$balmsg.BalloonTipIcon = [System.Windows.Forms.ToolTipIcon]::Warning
$balmsg.BalloonTipText = 'これはWindows 10ユーザーへのポップアップメッセージです'
$balmsg.BalloonTipTitle = "注意 $Env:USERNAME"
$balmsg.Visible = $true
$balmsg.ShowBalloonTip(20000)方法3:BurntToastモジュールでカラフルなトースト通知を表示する
Windows 10(PowerShell 5.0以降)では、PowerShellギャラリーで公開されているBurntToastモジュールを使うと、デザイン性の高いトースト通知を簡単に作成できます。
モジュールはオンラインリポジトリから次のコマンドでインストールできます。
Install-Module -Name BurntToastインストール後は、たった1行でカラフルな通知を追加できます。たとえば、「Ethernetケーブル接続時にWi-Fiを自動的に無効化する」ようなスクリプトに、次のような通知を組み込めます。
New-BurntToastNotification -Text "Wi-Fiネットワークから切断しています", "デバイスが高速なEthernet LANに接続されたため、Wi-Fiネットワークから切断されました" -AppLogo C:\PS\changenetwork.pngおまけ:サウンドで通知する
これで、PowerShellからユーザーへ通知を表示する方法がわかりました。ユーザーのPCにスピーカーがあれば、[console]::beep()を使って好きなメロディーを鳴らすこともできます。以下はその一例です。
[console]::beep(440,500)
[console]::beep(440,500)
[console]::beep(440,500)
[console]::beep(349,350)
[console]::beep(523,150)
[console]::beep(440,500)
[console]::beep(349,350)
[console]::beep(523,150)
[console]::beep(440,1000)
[console]::beep(659,500)
[console]::beep(659,500)
[console]::beep(659,500)
[console]::beep(698,350)
[console]::beep(523,150)
[console]::beep(415,500)
[console]::beep(349,350)
[console]::beep(523,150)
[console]::beep(440,1000)
[console]::beep(880,500)
[console]::beep(440,350)
[console]::beep(440,150)
[console]::beep(880,500)
[console]::beep(830,250)
[console]::beep(784,250)
[console]::beep(740,125)
[console]::beep(698,125)
[console]::beep(740,250)
[console]::beep(455,250)
[console]::beep(622,500)
[console]::beep(587,250)
[console]::beep(554,250)
[console]::beep(523,125)
[console]::beep(466,125)
[console]::beep(523,250)
[console]::beep(349,125)
[console]::beep(415,500)
[console]::beep(349,375)
[console]::beep(440,125)
[console]::beep(523,500)
[console]::beep(440,375)
[console]::beep(523,125)
[console]::beep(659,1000)
[console]::beep(880,500)
[console]::beep(440,350)
[console]::beep(440,150)
[console]::beep(880,500)
[console]::beep(830,250)
[console]::beep(784,250)
[console]::beep(740,125)
[console]::beep(698,125)
[console]::beep(740,250)
[console]::beep(455,250)
[console]::beep(622,500)
[console]::beep(587,250)
[console]::beep(554,250)
[console]::beep(523,125)
[console]::beep(466,125)
[console]::beep(523,250)
[console]::beep(349,250)
[console]::beep(415,500)
[console]::beep(349,375)
[console]::beep(523,125)
[console]::beep(440,500)
[console]::beep(349,375)
[console]::beep(261,125)
[console]::beep(440,1000)用途に応じてWscriptのPopup、Windows Formsのバルーン通知、BurntToastモジュールを使い分けることで、PowerShellスクリプトのユーザビリティを大きく向上させることができます。
-
【PowerShell】Windows 10/8.1/8 にインストール済みのすべてのアプリとパッケージを一覧表示する方法
Windows 10 のパソコンにインストールされているすべてのアプリやプログラムを PowerShell で確認したい方は、本記事の手順をご参考ください。Windows 10 および Windows 8(8.1)のモダンアプリは、すべてインストールパッケージを通じて導入されています。インストールパッケージとは、モダンアプリのインストールに必要なファイルがすべて含まれた固有のファイルのことです。特定のアプリを再インストールまたはアンインストールするには、そのアプリの名前(Name)、あるいはインストール時に使用されるパッケージの完全な名前(PackageFullName)を把握しておく必要があ
-
コマンドプロンプトとPowerShellでアプリをインストールする方法|Chocolatey完全ガイド
ソフトウェアのインストールは、手間がかかり、繰り返し作業になりやすく、ミスも起こりやすいプロセスです。アプリを使い始めるまでに、ダウンロード→インストーラーの起動→完了待ちという流れが必要で、多くの時間を消費します。コマンドプロンプトからのアプリインストール方法を覚えれば、この時間を大幅に節約できます。さらにPowerShellを使えば、複数のアプリを同時にインストールすることも可能です。 PowerShellとコマンドプロンプトは、Windows 10/11上のアプリケーションをスムーズにインストールできるツールです。ただし、それぞれインストール手順には若干の違いがあります。本ガイドでは、コ