Как отфильтровать несколько элементов из реестра с помощью wrere-object -like?

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

Вопрос

Я пытаюсь получить несколько элементов из реестра, используя 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, не все, Почему?

Это было полезно?

Решение

Проблема в логике, которую вы вкладываете. -and означает, что оба должны быть правдой, используйте -or вместо.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top