Questa è una parte di una serie di blog in corso scritta da Adam Gordon. Ogni settimana, Adam vi guiderà attraverso un comando PowerShell, mostrandovi quando e come utilizzarlo. Questa settimana, Adam copre Where-Object.
Quando usare Where-Object
Il cmdlet Where-Object seleziona gli oggetti che hanno particolari valori di proprietà dalla collezione di oggetti che gli vengono passati.
A partire da Windows PowerShell 3.0, ci sono due modi diversi per costruire un comando Where-Object.
- Blocco script. È possibile utilizzare un blocco di script per specificare il nome della proprietà, un operatore di confronto e il valore della proprietà. Where-Object restituisce tutti gli oggetti per i quali la dichiarazione del blocco di script è vera.
- Dichiarazione di confronto. Puoi anche scrivere un’istruzione di confronto, che è molto più simile al linguaggio naturale.
Come usare Where-Object
Ottieni i servizi fermati:
(1st) Get-Service | Where-Object {$_.Status -eq “Stopped”}
(2nd) Get-Service | where Status -eq “Stopped”
Questi comandi ottengono una lista di tutti i servizi che sono attualmente fermi.
La variabile automatica $_ rappresenta ogni oggetto che viene passato alla cmdlet Where-Object.
Il (1°) comando usa il formato di blocco script, il (2°) comando usa il formato di dichiarazione di confronto.
Raccogli i processi basati sul working set:
Get-Process | Where-Object {$_.WorkingSet -GT 25000*1024}
Get-Process | Where-Object WorkingSet -GT (25000*1024)
Questi comandi elencano i processi che hanno un working set maggiore di 25.000 kilobyte (KB).
Perché il valore della proprietà WorkingSet è memorizzato in byte, il valore di 25.000 è moltiplicato per 1.024.
Il blocco di script e la sintassi della dichiarazione sono equivalenti e possono essere usati in modo intercambiabile.
Usa il formato della dichiarazione di confronto:
(1°) Get-Process | Where-Object -Property Handles -GE -Value 1000
(2°) Get-Process | where Handles -GE 1000
Questo esempio mostra come usare il nuovo formato di dichiarazione di confronto della cmdlet Where-Object.
Il (1°) comando usa il formato di dichiarazione di confronto. In questo comando, non vengono usati alias e tutti i parametri includono il nome del parametro.
Il (2°) comando è l’uso più naturale del formato di comando di confronto. L’alias where è sostituito dal nome del cmdlet Where-Object e tutti i nomi dei parametri opzionali sono omessi.
Usa condizioni multiple:
Get-Module -ListAvailable | where {($_.Name -notlike “Microsoft*” -and $_.Name -notlike “PS*”) -and $_.HelpInfoUri}
Il comando usa il parametro -ListAvailable del cmdlet Get-Module per ottenere tutti i moduli sul computer.
Un operatore pipeline (|) invia i moduli al cmdlet Where-Object, che ottiene i moduli i cui nomi non iniziano con Microsoft o PS, e hanno un valore per la proprietà HelpInfoURI, che dice a PowerShell dove trovare i file di aiuto aggiornati per il modulo.
Le dichiarazioni di confronto sono collegate dall’operatore logico And.
L’esempio utilizza il formato di comando del blocco di script.
NOTA: Gli operatori logici, come And e Or, sono validi solo nei blocchi di script. Non puoi usarli nel formato della dichiarazione di confronto di un comando Where-Object.
Impara il comando della settimana scorsa: Get-WinEvent.
Hai bisogno di formazione su PowerShell? Dai un’occhiata ai corsi di formazione IT online su PowerShell di ITProTV.
Sì.