You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PowerShell 如何在Where-Object中通过Foreach校验数组属性匹配

正确写法

你标注位置的代码可以直接用PowerShell内置的-in操作符实现需求,写法如下:

Where-Object { $_.ID -in $IDFilterList }

如果你的运行环境是PowerShell 2.0,不支持-in操作符,也可以用-contains操作符反过来写:

Where-Object { $IDFilterList -contains $_.ID }

如果你需要的不是完全匹配ID,而是像你原代码里的-match那样做正则模糊匹配,可以用下面的写法:

Where-Object { foreach ($id in $IDFilterList) { if ($_.ID -match $id) { return $true } } return $false }

另外你原代码还有两处语法错误需要同步修正:

  1. 第一个Where-Object的过滤条件没有闭合右括号
  2. 第一个Where-Object的条件后面多了多余的管道符

修正后的完整代码如下:

$IDFilterList = @("1" , "2", "3", "4", "5", "6", "7", "8", "9")
   
if ($file.Name.Contains("SomeStuff")) {
    $ImportendCollection += $Result | 
    Where-Object { ($_.Level -Match 1) -or ($_.Level -Match 2) -or ($_.Level -Match 3) } |
    Where-Object { $_.ID -in $IDFilterList } |
    Group-Object -Property id, LevelDisplayName, LogName -NoElement | 
    Sort-Object -Property count -Descending
}

内容的提问来源于stack exchange,提问作者Larry

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 06:24:01