Condividi questo post:

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ì.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.