变量中具有多个 ID 的 Get-WinEvent -FilterHashTable 不起作用

adr*_*ing 3 powershell event-log

这对我来说工作:

Get-WinEvent -FilterHashTable @{Logname = "ForwardedEvents" ; ID = 4625,4740}
Run Code Online (Sandbox Code Playgroud)

(……我期望的结果……)

这有效:

$EventId = "4625"

Get-WinEvent -FilterHashTable @{Logname = "ForwardedEvents" ; ID = $EventId}
Run Code Online (Sandbox Code Playgroud)

这不起作用:

$EventId = "4625,4740"

Get-WinEvent -FilterHashTable @{Logname = "ForwardedEvents" ; ID = $EventId}
Run Code Online (Sandbox Code Playgroud)

错误...

  Get-WinEvent : No events were found that match the specified selection criteria.
At line:1 char:13
+ Get-WinEvent <<<<  -FilterHashTable @{Logname = "ForwardedEvents" ; ID = $EventIds}
+ CategoryInfo          : ObjectNotFound: (:) [Get-WinEvent], Exception
+ FullyQualifiedErrorId : NoMatchingEventsFound,Microsoft.PowerShell.Commands.GetWinEventCommand
Run Code Online (Sandbox Code Playgroud)

有人可以帮忙吗?

Mat*_*att 6

只需将其更改为$EventId = 4625,4740(删除引号)即可。查看和 的文档,Get-WinEvent-FilterHashTable我们看到:

-- ID=<Int32[]>
Run Code Online (Sandbox Code Playgroud)

所以它需要一个数组而不是一个字符串。