SE の雑記

SQL Server の情報をメインに Microsoft 製品の勉強内容を日々投稿

PowerShellでイベントログに情報を出力

leave a comment

PowerShell でイベントログに情報を出力する場合のメモを。

参考となる情報としては以下のものがあります。
How to Use PowerShell to Write to Event Logs
List eventlog sources?

イベントログへの出力は Write-Eventlog で行うことができます。

Write-EventLog -LogName Application -Source Application -EventId 1 -EntryType Information -Message "PowerShell Test"

実行すると以下のようなログをイベントログに出力することができます。

Write-EventLog に出力する際に指定する Source は存在しているソースを指定する必要があります。

また、既存のソースを指定した場合、対応したメッセージが存在していない場合は指定したメッセージ以外の内容も出力がされます。

Write-EventLog を使用する場合、既存のソースを指定するのではなく、新規にソースを登録してそのソースを使用してメッセージを出力した方がよいかなと思います。

if ([System.Diagnostics.EventLog]::SourceExists("nawagamisama") -eq $false){
    New-EventLog -LogName Application -Source nawagamisama
}
Write-EventLog -LogName Application -EntryType Error -Source nawagamisama -EventId 1 -Message "Power Shell Test"
# ソースを削除する場合
# Remove-EventLog -Source nawagamisama

このコマンドで出力した結果がこちらになります。

新規に登録したソースを使用してメッセージを出力した場合、出力したメッセージのみをイベントログに書き込むことができます。

イベントログで登録されているソースですが、[HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesEventLog] から確認することができるようです。

レジストリですので PowerShell からも取得できます。

Get-ChildItem -Path HKLM:SYSTEMCurrentControlSetServicesEventLogApplication

スクリプト内でイベントログにメッセージを出力する場合は、ソースを登録して使用した方がよさそうですね。

Share

Written by Masayuki.Ozawa

4月 12th, 2014 at 9:41 pm

Posted in PowerShell

Tagged with

Leave a Reply