如何使用whrere-object -like从regerstry中过滤多个项目?

时间:2014-07-29 17:21:58

标签: powershell powershell-v2.0 powershell-v3.0 powershell-v4.0

我试图通过使用where-object从注册表中获取一些项目,我只能过滤一个项目但是多个项目...我的脚本有什么问题吗?

代码仅适用于一个项目

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,而不是全部,为什么?

1 个答案:

答案 0 :(得分:2)

问题在于您输入的逻辑。-and表示两者都必须为真,请改用-or

相关问题