我试图通过使用从注册表中获取一些项目 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 相反。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top