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ê?

Foi útil?

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
scroll top