Como filtrar vários itens do registro usando whrere-object -like?
-
21-12-2019 - |
Pergunta
Estou tentando obter alguns itens do registro usando where-object
, só posso filtrar um item, mas vários itens... há algo errado com meu script?
Esse o código funciona bem para apenas um item
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
Mas se eu configurá-lo para filtrar vários itens, ele é executado, termina, sem nenhum resultado...alguma ideia do porquê?
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
Se eu usar
Where-Object {
$_.Displayname -like "Security*"
}
Isso me dá apenas 3 itens correspondentes Security
, nem todos eles, por quê?
Solução
A questão é a lógica que você coloca. -and
significa que ambos precisam ser verdadeiros, use -or
em vez de.
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow