Windows では、バルーン通知(トースト通知)を表示する方法はいくつかあります。一般的には BurntToast
モジュールを使う方法が知られていますが、この方法は Windows 10 専用 であり、また 追加のモジュールをインストールする必要がある ため、環境によっては利用できません。
そこで、本記事では PowerShell の標準機能のみ を使って、System.Windows.Forms.NotifyIcon
を利用し、バルーン通知を表示する方法を詳しく解説します。Visual Studio のインストールも不要で、どの Windows 環境でも実行できます。
✅ PowerShell でバルーン通知を表示する方法
PowerShell には System.Windows.Forms
という .NET Framework のライブラリがあり、その中に NotifyIcon
という通知用のコンポーネントが含まれています。これを活用することで、簡単にバルーン通知を表示できます。
🔹 バルーン通知の基本スクリプト
まずは、最も基本的なバルーン通知を表示するスクリプトを紹介します。
# .NET の Windows Forms をロード
Add-Type -AssemblyName System.Windows.Forms
# NotifyIcon オブジェクトを作成
$notify = New-Object System.Windows.Forms.NotifyIcon
$notify.Icon = [System.Drawing.SystemIcons]::Information # 情報アイコンを設定
$notify.BalloonTipTitle = "通知タイトル"
$notify.BalloonTipText = "これはPowerShellのバルーン通知です。"
$notify.Visible = $true # アイコンをタスクトレイに表示
# バルーンを表示(ミリ秒単位で表示時間を指定)
$notify.ShowBalloonTip(5000) # 5秒間表示
# アイコンを消す(不要なら削除)
Start-Sleep -Seconds 6
$notify.Dispose()
このスクリプトを PowerShell で実行すると、タスクバーの通知エリア(システムトレイ)に 情報アイコン付きのバルーン通知 が表示されます。
✅ バルーン通知のカスタマイズ
上記の基本スクリプトを少し拡張し、カスタマイズ可能なスクリプトを作成してみましょう。
🔹 カスタムバルーン通知
以下のスクリプトでは、通知タイトル、メッセージ、アイコン、表示時間 を自由に指定できます。
param (
[string]$Title = "PowerShell通知",
[string]$Message = "これはカスタムバルーン通知です。",
[int]$Duration = 5000 # 表示時間(ミリ秒)
)
# Windows Forms をロード
Add-Type -AssemblyName System.Windows.Forms
# NotifyIcon オブジェクトを作成
$notify = New-Object System.Windows.Forms.NotifyIcon
$notify.Icon = [System.Drawing.SystemIcons]::Information # アイコン(変更可能)
$notify.BalloonTipTitle = $Title
$notify.BalloonTipText = $Message
$notify.Visible = $true
# バルーンを表示
$notify.ShowBalloonTip($Duration)
# 指定時間後にアイコンを消す
Start-Sleep -Milliseconds ($Duration + 1000)
$notify.Dispose()
💡 スクリプトの実行例
PowerShell で以下のように実行すると、カスタムメッセージを表示できます。
powershell -File "balloon.ps1" -Title "システム警告" -Message "ディスクの空き容量が少なくなっています。" -Duration 8000
🔹 アイコンを変更する
デフォルトでは 「情報アイコン」 を使用していますが、以下のように変更できます。
$notify.Icon = [System.Drawing.SystemIcons]::Warning # 警告アイコン
利用できるアイコン:
[System.Drawing.SystemIcons]::Information
(情報)[System.Drawing.SystemIcons]::Warning
(警告)[System.Drawing.SystemIcons]::Error
(エラー)
✅ スケジュールで定期的に通知を送る
例えば、1時間ごとにリマインダーを送る ような使い方も可能です。
Windows のタスクスケジューラを使えば、自動実行できます。
🔹 タスクスケジューラで PowerShell スクリプトを定期実行
- タスクスケジューラを開く(
Win + R
→taskschd.msc
) - 「タスクの作成」 をクリック
- 「全般」タブ
- 名前:
PowerShell通知
- 実行時に最上位の特権を使用する(チェック)
- 名前:
- 「トリガー」タブ
- 新規 → 「毎時」 → 60分ごとに設定
- 「操作」タブ
- 新規 → プログラムの開始
- プログラム/スクリプト:
powershell.exe
- 引数の追加: powershellコピーする編集する
-ExecutionPolicy Bypass -File "C:\Scripts\balloon.ps1" -Title "リマインダー" -Message "1時間経過しました。"
- 「OK」を押してタスクを保存
これで、1時間ごとにバルーン通知が表示されるようになります。
✅ まとめ
BurntToast
を使わずに PowerShell の標準機能だけで Windows のバルーン通知を表示する方法 を紹介しました。New-Object System.Windows.Forms.NotifyIcon
を活用することで、モジュール不要で簡単に実装できる ので、どんな Windows 環境でも動作します。