Come filtrare più elementi dal registro usando dove-oggetto -like?
-
21-12-2019 - |
Domanda
Sto cercando di ottenere pochi elementi dal registro utilizzando where-object
, posso avere solo un oggetto filtrato ma più oggetti ... C'è qualcosa di sbagliato nel mio script?
Questo codice funziona bene solo per un elemento
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
.
Ma Se l'ho impostato per filtrare più elementi, funziona, finisce, senza alcun risultato ... nessuna idea del perché?
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 uso
Where-Object {
$_.Displayname -like "Security*"
}
.
Mi dà solo 3 elementi corrisponde a Security
, non tutti, perché?
Soluzione
Il problema è la logica che hai inserito. -and
significa che entrambi devono essere veritieri, utilizzare invece -or
.
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow