2012-05-20 5 views
1

Я строю функцию powershell, поэтому я могу запросить журналы событий нескольких компьютеров. Ive скопировал приведенный ниже код, в котором мне нужна помощь. Если я не отправляю eventID, я хочу, чтобы скрипт нашел все идентификаторы событий, как я могу это достичь?Powershell: параметры функции

#this would be the parameter part of the script 
[String]$ComputerName = $env:COMPUTERNAME#Current computer 
[String[]][email protected]("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 

ответ

3

Во-первых, ваши другие question исправляет типы $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 #... 
+0

Спасибо за быстрый ответ. работает, я не знал, что вы можете добавить в хед-таблицы вроде :-) – resolver101