PowerShellで時間のかかるバッチ処理やバックアップスクリプトを実行した後、ユーザーに完了通知を表示したいことはよくあります。そのような場面では、Windowsのポップアップ(メッセージボックス)で完了を知らせる方法が便利です。本記事では、PowerShellとWscript.Shell
を使って、処理完了時にポップアップ通知を表示する方法を紹介します。
基本的なメッセージボックス表示の方法
PowerShellでは、COMオブジェクトの Wscript.Shell
を使って、メッセージボックスを簡単に表示できます。
$wshell = New-Object -ComObject Wscript.Shell
$wshell.Popup("バッチ処理が完了しました。", 0, "完了通知", 64)
引数の意味:
- 第1引数:表示するメッセージ
- 第2引数:表示時間(秒)、0は手動で閉じるまで
- 第3引数:タイトルバーに表示する文字列
- 第4引数:アイコンとボタン(例:64は情報アイコン)
バッチ処理と組み合わせる例
# ファイルをコピーする処理
Copy-Item "C:\Data\*.txt" -Destination "D:\Backup\" -Recurse
# 完了通知を表示
$wshell = New-Object -ComObject Wscript.Shell
$wshell.Popup("ファイルのバックアップが完了しました。", 0, "バックアップ完了", 64)
通知のカスタマイズ(アイコンとボタン)
第4引数で通知スタイルを細かく指定できます:
値 | 意味 |
---|---|
0 | OKボタンのみ |
48 | 警告アイコン |
64 | 情報アイコン |
16 | エラーアイコン |
処理結果によって通知内容を分岐
try {
# 仮の処理(例:圧縮)
Compress-Archive -Path "C:\Data\*" -DestinationPath "C:\archive.zip" -Force
$msg = "圧縮処理が正常に完了しました。"
$icon = 64
} catch {
$msg = "エラーが発生しました:" + $_.Exception.Message
$icon = 16
}
(New-Object -ComObject Wscript.Shell).Popup($msg, 0, "処理結果", $icon)
タスクスケジューラでの利用時の注意点
ポップアップはユーザーのログインセッションでのみ表示されるため、スケジュールタスクで使う場合は「ユーザーがログオンしているときのみ実行」に設定してください。
まとめ
PowerShellでバッチ処理の完了をユーザーに通知するには、Wscript.Shell
を使ったポップアップ表示が手軽で便利です。処理の成否に応じたアイコンやメッセージを組み合わせることで、視認性の高い通知が実現できます。業務自動化スクリプトやバックアップ処理の完了確認に、ぜひ活用してみてください。