如何使用whrere-object-like从regerstry中过滤多个项目?
-
21-12-2019 - |
题
我试图通过使用从注册表中获取一些项目 where-object
, ,我只能有一个项目过滤,但多个items...is 我的剧本有什么问题吗?
这 代码只适用于一个项目
Get-ChildItem HKLM:\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\ |
ForEach-Object {Get-ItemProperty $_.pspath} |
Where-Object {
$_.Displayname -like 'adobe air'
} |
Select-Object DisplayName,DisplayVersion |
Sort-Object DisplayName |
Out-GridView
但是 如果我将其设置为过滤多个项目,它运行,结束,没有任何结果。..知道为什么吗?
Get-ChildItem HKLM:\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\ |
ForEach-Object {Get-ItemProperty $_.pspath} |
Where-Object {
$_.Displayname -like 'adobe air' -and
$_.Displayname -like 'Java*' -and
$_.Displayname -like 'TeamViewer*'
} |
Select-Object DisplayName,DisplayVersion |
Sort-Object DisplayName |
Out-GridView
如果我使用
Where-Object {
$_.Displayname -like "Security*"
}
它只给我3个项目匹配 Security
, ,不是所有的人,为什么?
解决方案
问题是你投入的逻辑。 -and
意味着两者都需要是真实的,使用 -or
相反。
不隶属于 StackOverflow