1

複数のコンピューターのイベントログをクエリできるように、PowerShell関数を作成しています。私は助けが必要な以下のコードをコピーしました。eventIDを送信しない場合、スクリプトですべてのイベントIDを検索する必要がありますが、どうすればこれを実現できますか?

#this would be the parameter part of the script
[String]$ComputerName = $env:COMPUTERNAME#Current computer 
[String[]]$EventLogNames=@("Application","System")#Main eventlogs 
[int[]]$EventIds = 1 #Event Ids 
[System.DateTime[]]$EventStartDate = (((Get-Date).addDays(-2)).date)#date 10 days ago 
[System.DateTime[]]$EventEndTime = (Get-Date)#date 10 days ago 

#This fits in the process section
$EventCritea = @{logname = $EventLogNames; StartTime=$EventStartDate; EndTime=$EventEndTime; ID=$EventIds}
Get-WinEvent -ComputerName $ComputerName -FilterHashTable $EventCritea  -ErrorAction SilentlyContinue
4

1 に答える 1

3

まず、他の質問$EventStartDateでとのタイプを修正します$EventEndTime

この質問の場合:ハッシュテーブルを段階的に作成します。

$filter = @{logname = $EventLogNames; StartTime=$EventStartDate; EndTime=$EventEndTime}

if ($EventIds -ne $null -and $EventIds.Length -gt 0) {
  $filter.ID=$EventIds
}

Get-WinEvent -ComputerName $ComputerName -FilterHashTable $filter #...
于 2012-05-20T16:18:34.870 に答える