2015-10-15 71 views
0

有我的循环麻烦:PowerShell脚本位置对象中的foreach

$array [email protected](); 
    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”不会被保存。

无法找到我的病症的正确语法:返回所有结果或根本没有。

回答

3

试试这个:

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

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

这也将工作:

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

感谢您的帮助! 对不起,在PS这么noob ...但我应该在哪里添加它完全? –

+0

不需要添加它,就是这样,我的代码正在做我认为你打算做的事。唯一的区别是我遗漏了'Write-Host'行。 –

+0

谢谢戴夫! 我终于明白它是如何工作的! 这很好!谢谢你的帮助。 –