Powershell脚本在foreach中的Where-Object

时间:2015-10-15 13:20:34

标签: powershell foreach

我的循环出现问题:

   $array =@();
    foreach($list in $Lists | Where-Object{"History", "Historic" -notmatch $list.Title}) 
    {
        $result = new-object psobject
        $result | Add-Member -MemberType noteproperty -Name Title -value $list.Title
        $array += $result
        Write-Host $list.Title
    }

我只想保存标题中不包含“历史记录”或“历史记录”的结果。

例如,“Workflow blablabla - Historic”不会被保存。

无法找到我的条件的正确语法:返回所有结果或根本不返回任何结果。

1 个答案:

答案 0 :(得分:5)

试试这个:

$result = $lists | ? {$_.Title -notmatch 'Histor(y|ic)'} | Select Title

你的where子句是正则表达式,在-notmatch的右侧有一个正则表达式。

这也有效:

$result = $lists | ? {$_.Title -notmatch 'History' -or $_.Title -notmatch 'Historic'} | Select Title