where-object-likeを使用して、レジストリから複数のアイテムをフィルタリングする方法

StackOverflow https://stackoverflow.com//questions/25021345

質問

where-objectを使用してレジストリからのアイテムをいくつか取得しようとしています、私は1つのアイテムをフィルタリングするだけです。

このコードは1つの項目のみにうまく機能します

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