【问题标题】:Powershell script Where-Object in foreachforeach中的Powershell脚本Where-Object
【发布时间】:2016-01-13 23:31:48
【问题描述】:

我的循环有问题:

   $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”不会被保存。

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

【问题讨论】:

    标签: powershell foreach


    【解决方案1】:

    试试这个:

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

    您的 where 子句是一个正则表达式,正则表达式位于 -notmatch 的右侧。

    这也可以:

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

    【讨论】:

    • 感谢您的帮助!很抱歉在 PS 上这么菜鸟……但是我应该在哪里添加呢?
    • 不需要添加它,就是这样,我的代码正在做我认为你打算做的事情。唯一的区别是我省略了Write-Host 行。
    • 谢谢戴夫!我终于明白它是如何工作的!那工作很棒!感谢您的帮助。
    猜你喜欢
    • 1970-01-01
    • 2021-12-07
    • 2018-02-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-26
    • 2021-10-19
    相关资源
    最近更新 更多