Как отфильтровать несколько элементов из реестра с помощью wrere-object -like?
-
21-12-2019 - |
Вопрос
Я пытаюсь получить несколько элементов из реестра, используя 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
вместо.
Не связан с StackOverflow