運用環境から定期的に Windows イベント ログを CSV にエクスポートする必要があります。
イベントが必要なマシンのリストと、取得する必要があるイベント ID のリストを含む単純な XML 構成ファイルがあります。
ここから、各マシン名を順番にループし、次に各イベント ID をループしてログを取得し、CSV にエクスポートします。実行ごとにマシンごとに 1 つの CSV が必要です。
すべての変数を計算したら、PS コマンドで 1 つのイベント ID のログを取得するのは非常に簡単です。
foreach ($machine in $config.Configuration.Machines.Machine)
{
$csvname=$outputlocation + $machine.Value + "_" + $datestring + ".csv"
foreach ($eventid in $config.Configuration.EventIds.EventId)
{
Get-WinEvent -ComputerName $machine.Value -ErrorAction SilentlyContinue -FilterHashTable @{Logname='Security';ID=$eventid.Value} | where {$_.TimeCreated -gt $lastexecutiondate} | export-csv -NoClobber -append $csvname
}
}
Execpt 毎回 CSV に追加できません。PS 2.0 は明らかにこれをサポートしていません。一度にすべてのイベント Id を抽出しようとしましたが、これは少し長いようで、構成ファイルを使用できるようになる可能性がありますが、PowerShell にはかなり慣れていないため、うまくいきませんでした。
また、複数の LogNames (システム、セキュリティ、およびアプリケーション) を指定する必要があり、同じステートメントを 3 回実行してアピールするのではなく、1 つのステートメントを実行することを好みますが、これを行う方法がわかりません。
残念ながら、この時点で Google は私をぐるぐる回しています。