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