【发布时间】:2018-02-01 18:48:38
【问题描述】:
$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 提示符。
【问题讨论】:
-
确认一下,您是否要删除名称以 Microsoft 或 Visual 开头的任何内容?
-
是的,先生,但该数组将会增长。我需要过滤掉不需要安装的程序。我使用 Microsoft 和 Visual 只是为了进行测试。
-
$f = $_.name -notcontains $remove和$f.($_)应该完成什么?请阅读PowerShell operators 的工作原理。你需要像$n = $_.Name; -not ($remove | ? {$n -like $_})这样的东西。