Powershell脚本在foreach中的Where-Object

Gor*_*ble 3 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
    }
Run Code Online (Sandbox Code Playgroud)

我想只保存标题中不包含"历史"或"历史"的结果.

例如,"Workflow blablabla - Historic"不会被保存.

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

Dav*_*ton 5

试试这个:

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

你的where子句是一个正则表达式,右边有一个正则表达式-notmatch.

这也有效:

$result = $lists | ? {$_.Title -notmatch 'History' -or $_.Title -notmatch 'Historic'} | Select Title
Run Code Online (Sandbox Code Playgroud)