我需要通过参数将信息发送到我的脚本,在某些情况下,必须添加所有信息,如果符合此条件,脚本将起作用。如果缺少任何信息,脚本将给出错误。我希望脚本忽略丢失的信息。
示例:
script.ps1 -consultlog应用程序-id 1003 -level 4(确定)
script.ps1 -consultlog应用程序-级别4(失败)
param($consultlog,$id,$level)
$event = Get-WinEvent -FilterHashtable @{
LogName= $consultlog
ID= $id
Level= $level
StartTime=(Get-Date).AddHours(-24)
}
$event
答案 0 :(得分:0)
_ [edit-我最初发布的版本使用.Where()
来过滤键/值对……并给出了 dictionary 而不是 hashtable。]
您可以在脚本中添加测试以检查$ 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
...此版本实际上返回事件。 [ grin ]注意,它处理了-Level
参数。