Question

J'essaie d'obtenir quelques éléments du registre en utilisant where-object, je ne peux filtrer qu'un seul élément mais plusieurs éléments... y a-t-il un problème avec mon script ?

Ce le code fonctionne bien pour un seul élément

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

Mais si je le configure pour filtrer plusieurs éléments, il s'exécute, se termine, sans aucun résultat...une idée de pourquoi ?

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

Si j'utilise

Where-Object {
$_.Displayname -like "Security*"
}

Cela ne me donne que 3 éléments correspondants Security, pas tous, pourquoi ?

Était-ce utile?

La solution

Le problème c'est la logique que vous mettez en place. -and signifie que les deux doivent être vrais, utilisez -or plutôt.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top