0
$remove = @('microsoft*','visual*')

Get-WmiObject -Class Win32_Product -ComputerName $CompName | Where-Object {
    $f = $_.name -notcontains $remove
    $remove | Where-Object { $f.($_) }
} | Format-Wide -Property Name -Column 1    

我不确定如何正确嵌套它,以便我可以过滤掉所有内容$remove并显示其余程序。我没有收到任何错误,它将等待大约 10 秒钟,然后继续到 PS 提示符。

4

1 回答 1

0

notcontains 会查找完全匹配的内容,因此在这里对您没有帮助。最简单的方法可能是这样,尽管如果要排除很多内容,您的正则表达式可能会变得非常讨厌:

get-wmiobject -class Win32_Product -ComputerName $CompName | Where-Object {

$_.name -notmatch "^(Microsoft|Visual)."

} | Format-Wide -Property Name -Column 1
于 2018-02-01T20:31:44.720 回答