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

È stato utile?

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