日常的にイベントログを監視する場合は監視から除外したいログが出てきますので、それを含まない形で出力します。
# 対象コンピュータを指定する
$ComName = [Net.Dns]::GetHostName()
# 抽出を行うログを指定する
$LogName = "System"
# 抽出を行う期間を指定する
$StartTime = (Get-Date).AddDays(-7)
$EndTime = Get-Date
# 監視対象から除外するイベントを記載する
$ExceptionFilter=
@(
@{
Id = 1014;
Level = 3;
ProviderName = "Microsoft-Windows-DNS-Client";
},
@{
Id = 22;
Level = 3;
ProviderName = "Microsoft-Windows-Hyper-V-VmSwitch";
}
)
# 指定した種類・期間のイベントログを取得する
$EventsList = Get-WinEvent -ComputerName $ComName -FilterHashTable @{LogName=$LogName ; StartTime=$StartTime ; EndTime = $EndTime }
# 重大、エラー、警告以外のイベントを除外する
$EventsList = $EventsList | Where-Object {$_.Level -le 3}
# 除外リストに記載のログを除外する
$Cnt = 0
while ($Cnt -lt $ExceptionFilter.count) {
$EventsList = $EventsList | Where-Object {-not ($_.Id -eq $ExceptionFilter[$Cnt].Id -and $_.Level -eq $ExceptionFilter[$Cnt].Level -and $_.ProviderName -eq $ExceptionFilter[$Cnt].ProviderName)}
$Cnt++
}
# イベントのリストを出力する
$EventsList | Format-List -Property LogName, MachineName, LevelDisplayName, TimeCreated, ProviderName, Id, UserId, Message
参考サイトGet-WinEvent
連想配列を変換してユーザー定義オブジェクトを簡単に作成する
0 件のコメント:
コメントを投稿