本記事はマイクロソフト社員によって公開されております。
こんにちは、Windows サポート チームの中森です。
本記事では、Windows OS 既定で利用できるイベント ログの取り扱いコマンドについて、ご案内いたします。
はじめに:イベント ログ操作のインターフェースについて
イベント ログの操作インターフェースは、Windows Vista / Windows Server 2008 以降に大きく機能改善が行われており、イベント ログの取得、書き込みのインターフェースが Windows XP / Windows Server 2003 以前と異なります。
Event Logging API (Windows XP / Windows Server 2003 以前のインターフェース)
Windows Event Log API (Windows Vista / Windows Server 2008 以降のインターフェース)
Windows XP/Windows Server 2003 以前のインターフェースにつきましては、レガシーなインターフェースと定義されており、当該インターフェースを利用する OS コマンドや、PowerShell コマンドレットは利用を非推奨とアナウンスさせていただくケースがございます。
アナウンス例:
Get-EventLog
— 抜粋 —
EventLog 名詞を含む PowerShell コマンドレットは、アプリケーション、システム、セキュリティなどの Windows クラシック イベント ログでのみ機能します。 Windows Vista 以降の Windows バージョンで Windows イベント ログ テクノロジを使用するログを取得するには、Get-WinEventを使用します。
— 抜粋ここまで —
レガシーなインターフェースを利用する Windows OS 既定のコマンドやコマンドレットを利用した場合、想定外な事象が生じる可能性がございますため、移行可能な方法がある場合には、お早めに移行をご検討いただけますと幸いです。
Windows OS 既定で利用できるイベント ログの取り扱いコマンドについて
上記で、ご紹介した EventLog 名詞を含む PowerShell コマンドレットは、WinEvent 名詞のコマンドレットを利用いただくことを推奨しており、現行の運用スクリプトにて確認された場合には置き換えや以降をご検討いただけますと幸いです。弊社サポートとしても EventLog 名詞のコマンドレットにて確認される問題は対処されないことが多く、WinEvent 名詞への移行をお願いしております。
推奨されるコマンドレット例:
Get-WinEvent
ここで、大変恐縮ではございますが、特にリモート コンピューターに対してイベント ログの書き込みを行うコマンドは、レガシーなインターフェースを使用しており、互換性のために Windows OS に含まれていると、ご認識いただけますと幸いでございます。
レガシーな API 利用例:
Write-EventLog
eventcreate
Windows Script Host/LogEvent
一部、代替のコマンドが用意されているケースはございますが、リモート コンピューターの指定はコマンド既定では持ち合わせておらず、別途コンピューター間のリモート実行は、他テクノロジーを利用いただく必要がございます。
なお、Windows PowerShell を利用される場合には、PowerShell 自体にリモート コンピューターに対してコマンド実行を要求する機能が備わっており、そちらの利用をご検討いただけますと幸いです。
または、他コンピューターのイベント ログを特定のサーバーにて管理されたい場合、各コンピューター上のコマンド実行ではなく、Windows イベント コレクターと呼ばれる機能をご利用いただくことも、ご検討いただけますと幸いです。
修正履歴
- 2026.05.21 本ブログを公開
※ 本情報の内容 (添付文書、リンク先などを含む) は、作成日時点でのものであり、予告なく変更される場合があります。