_ [edit - версия, которую я первоначально опубликовал, использует .Where()
для фильтрации пар ключ / значение ... и дал словарь вместо хеш-таблицы.]
вы можете добавить в скрипт тест для проверки входных данных $ Null.это скорее похоже на то, что можно сделать с разбрызгиванием [Get-Help about_Splatting
].
param ($consultlog,$id,$level)
# there is almost certainly a more graceful way to do this [*sigh ...*]
$FilterHT = @{}
if ($consultlog) {$FilterHT.Add('LogName', $consultlog)}
if ($id) {$FilterHT.Add('ID', $id)}
if ($level) {$FilterHT.Add('Level', $level)}
$FilterHT.Add('StartTime', (Get-Date).AddHours(-24))
$event = Get-WinEvent -FilterHashtable $FilterHT
$event
если вы называете это таким образом ...
$FileName.ps1 -consultlog security -id 4624
... эта версия фактически возвращает события.[ ухмылка ] обратите внимание, что он обработан, пропуская параметр -Level
.