不匹配$mylist的每个元素
我想列出所有卸载条目,并用白名单忽略一些条目 列出卸载条目是可行的,但我不明白如何使用不匹配$mylist的每个元素,list,powershell,List,Powershell,我想列出所有卸载条目,并用白名单忽略一些条目 列出卸载条目是可行的,但我不明白如何使用$mylist忽略“app1”、“app2”、“app3” 您有什么想法吗?要检查列表是否不包含特定元素,请使用-notcontains或-notin运算符: ... | Where-Object { $mylist -notcontains $_.DisplayName } | ... # Construct pattern $pattern = @($mylist|ForEach-Object {[reg
$mylist
忽略“app1”、“app2”、“app3”
您有什么想法吗?要检查列表是否不包含特定元素,请使用
-notcontains
或-notin
运算符:
... | Where-Object { $mylist -notcontains $_.DisplayName } | ...
# Construct pattern
$pattern = @($mylist|ForEach-Object {[regex]::Escape($_)}) -join '|'
# Use pattern with -match
... |Where-Object { $_.DisplayName -match $pattern }
或
请注意,-notin
操作符在PowerShell v3之前不可用
要将一个列表与另一个列表进行部分匹配,您需要以下内容:
... | Where-Object {
$name = $_.DisplayName;
-not ($mylist | Where-Object {$name -like "*$_*"})
} | ...
您可以从列表中构造正则表达式模式,然后使用
-match
运算符:
... | Where-Object { $mylist -notcontains $_.DisplayName } | ...
# Construct pattern
$pattern = @($mylist|ForEach-Object {[regex]::Escape($_)}) -join '|'
# Use pattern with -match
... |Where-Object { $_.DisplayName -match $pattern }
您好,谢谢ANWSER,但我的问题没有完成,例如应用程序“微软Visual C++ 2008可重新分发”,我只插入“Visual”,而不是所有完整的名称,我尝试“-不喜欢”,但它不起作用,你有想法?见更新答案。请确保下次不要在你的问题中遗漏任何相关内容。很抱歉这么说,但经过几次测试后,这似乎不起作用,我仍然有一行包含我列表中的元素。谢谢你花时间解决我的问题,我的错。它必须是
$name-像“*$\u*”
,而不是相反。它的工作很好,谢谢你,我从不使用模式,所以我会看看:)再次谢谢:)