こんにちは、はじめまして。めじろです。
PowerShellでバッチ処理などのスクリプト処理をさせていると度々実行結果をログ出力したくなります。
テキストに書き出してもいいのですがイベントビューアーから見た方がちゃんとしたシステムっぽい動きになります。
テキスト出力のほうが絶対に簡単です・・・
ではなぜイベントログに書き込むかというとプログラム外のメンテナンスが不要になります。
ログを出力すると日付ごとファイルを分けたり、レベルに応じたファイルにしたりと管理する内容が多くなり複雑化しやすくなります。
その点イベントログに書き込むだけで済むのでログローテーションを想定する必要がなくなります。
ログの管理がなくなるだけでプログラムの実装コストが下がったり、運用コストも下がります。
イベントログへの書き込みが用意されていてeventcreateとWrite-EventLogがあります。
Write-EventLogはPowershellのコマンドになります。
後述しますが長期に渡ってイベントに書き込む予定のあるプログラムの場合はeventcreateを使うことをおすすめします。
EventCreateで書き込み
eventcreate /t SUCCESS /id 1 /l application /d "PowerShellから書き込み"
引数 | 説明 | 値 |
/t | イベントの種類
eventcreate /? で使えるイベント名が確認できる |
ERROR
WARNING INFORMATION SUCCESS |
/id | id番号を指定
1001以上はエラーになる ルールを設けてフィルターを掛けやすくするといい |
1~1000 |
/l | イベントログの名前 | Applcation System |
/SO | イベントソース名を指定。
任意の文字列を指定できる。 ※Powershellとするとエラーになるので、予約後としてどこかで使われている様子。情報元は見つけられなかった ※イベントログ名がSYSTEMの場合はEventCreateで固定される |
任意 |
コマンドで登録される位置関係
多くの情報は登録できないが、必要な情報はログ登録ができそうです。
Write-EventLogで書き込みについて
の通りに下記のコマンドで実行してます。
Write-EventLog -LogName Application -Source SecurityCenter -EventID 10 -Message "PowerShellからの書き込み"
実行すると
Write-EventLog: The term 'Write-EventLog' is not recognized as a name of a cmdlet, function, script file, or executable program. Check the spelling of the name, or if a path was included, verify that the path is correct and try again.
エラーメッセージを確認するとWrite-EventLogというコマンドが認識されていないようです。
Powershell7で実行するとエラーになります。
削除されたコマンドを確認してみるとWrite-EventLogやGet-EventLogが掲載されています。
使えなくなりました。
前述のeventcreate関数を使ってイベント情報を書き込まないといけません
Windows 10のデフォルトのバージョンは5なのですぐに使えなくなることはありませんが、個人的に7の多機能性を優先したいので、古い5のバージョンは使わないようにしています。
Powershell5以前はWrite-EventLogは使えるので、ざっと説明します。
Write-EventLog -EventID 1000 -LogName Application -Source WindowsPowerShell -EntryType Information -Message "PowerShellからの書き込み"
eventcreateと違う点がいくつかあります。
- idが1~65535まで使える
- New-EventLogでSource名を登録することができる
- 戻り値が無いんでコンソールには何も表示されない
最後に
いかがでしたか?
お役に立ちましたでしょうか?
今後もブログの方を更新していきますのでよろしくお願いします。
最後になりますが、もしよろしければ読者の皆様からご支援いただけるのであればご支援いただきたく思います。
Amazon欲しい物リストを公開していますので、ご支援よろしくお願いします。
www.amazon.jp
またTwitter、Youtubeもやっています。よければフォロー、チャンネル登録をお願いします。
Twitter: @whiteye8780
www.youtube.com