PowerShell嵌套问题

时间:2018-02-01 18:48:39

标签: powershell get-wmiobject

$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提示。

1 个答案:

答案 0 :(得分:0)

notcontains寻找完全匹配,所以不会帮助你。 最简单的方法可能就是这样,虽然如果有很多要排除的话,你的正则表达式会变得很糟糕:

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

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

} | Format-Wide -Property Name -Column 1