Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
不匹配$mylist的每个元素_List_Powershell - Fatal编程技术网

不匹配$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*”
,而不是相反。它的工作很好,谢谢你,我从不使用模式,所以我会看看:)再次谢谢:)