【PowerShell応用編】ネットワーク監視を自動化する方法|ping不要の死活監視スクリプト

目次

【PowerShell応用編】ネットワーク監視を自動化する方法|ping不要の死活監視スクリプト

ネットワーク障害の早期発見やサーバ死活確認を自動化したい場合、
PowerShellを使えばシンプルに実現できます。

本記事では、 ICMPが禁止されている環境でも動作するPowerShell監視スクリプトを紹介します。
定期実行により、Web・DB・APIサーバなどの稼働状態を自動でチェック可能です。


スポンサーリンク




🧭 概要

多くの企業ネットワークでは、セキュリティ上の理由から ICMP(ping)通信が遮断 されています。
そのため、従来の ping コマンドによる監視が使えないケースもあります。

しかし PowerShell 7 以降の Test-Connection -Port を使えば、
TCPレベルでの疎通確認 が可能です。
これを活用して、 ping不要の自動監視スクリプトを構築していきます。


⚙️ 1. 監視対象リストの作成

まず、監視対象となるホストとポートを配列として定義します。


🧩 2. TCPレベルの疎通チェック

Test-Connection -Port を利用して、ポート単位で死活確認を行います。
ICMPが禁止されていても、TCP通信が通れば「OK」と判定できます。

出力例:


📦 3. ログファイルへの出力

監視結果をファイルに追記して履歴に残します。

結果例(CSV形式):


📬 4. メール通知を追加(オプション)

障害検知時に自動メール通知する場合は Send-MailMessageを使います。

💡 TeamsやSlackに通知する場合は、Webhook URLに Invoke-RestMethodを使えばOKです。

⏰ 5. 定期実行(Windowsタスクスケジューラ)

作成したスクリプトを .ps1ファイルとして保存し、
タスクスケジューラで自動実行を設定します。

項目 内容
トリガー 1時間ごと
操作 powershell.exe -File "C:\Scripts\NetworkMonitor.ps1"
実行時の権限 「最上位の特権で実行」にチェック

これで、サーバの死活状態が定期的に監視され、
障害発生時は即座に検知できます。


🧠 応用:HTTPレスポンス監視

Webサーバの応答確認には Invoke-WebRequestを使う方法も有効です。

StatusCode 200 が返れば正常稼働。
API監視やWebアプリ死活確認にも応用可能です。

🔗 関連記事


🧾 まとめ

  • Test-Connection -Portを使えば、ICMP禁止環境でも死活確認可能
  • ログ出力やメール通知で、自動監視をシンプルに構築可能
  • スケジューラ設定で運用自動化が実現
PowerShellは「運用監視の自動化ツール」としても強力です。
小さく始めて、徐々にログ解析・通知連携などに拡張していきましょう。

スポンサーリンク