我试图使用以下方法列出PC上安装的一些软件:
Get-WmiObject -Class Win32_Product |
Select-Object -Property name,version |
Where-Object {$_.name -like '*Java*'}
它有效,但当我在Where-Object
中添加更多名称时,它没有给我带来任何错误的结果。
Get-WmiObject -Class Win32_Product |
Select-Object -Property name,version |
Where-Object {$_.name -like '*Java*','*python*','*adobe*','*access*'}
为什么它只能用一个名字?
答案 0 :(得分:2)
我不认为-like
将在右侧采用阵列。试试一个正则表达式:
Where-Object {$_.name -match 'Java|python|adobe|access'}
答案 1 :(得分:1)
-Like运算符采用字符串参数(不是字符串数组),因此无论你给它什么,它都会被转换为[string]。如果您将参数转换为字符串:
[string]('*Java*','*python*','*adobe*','*access*')
你得到:
*Java* *python* *adobe* *access*
这就是你想要匹配的东西(你没有任何类似的文件名)。
最简单的方法是切换到-match运算符和交替的正则表达式:
Where-Object { $_.name -match 'Java|python|adobe|access' }