Lavorare con gli Oggetti in PowerShell: `Select-Object` e `Where-Object`

Script PowerShell

La vera potenza di PowerShell risiede nella sua pipeline a oggetti. Per manipolare gli oggetti che fluiscono attraverso questa pipeline, ci sono due cmdlet fondamentali che userai costantemente: `Where-Object` per filtrare e `Select-Object` per selezionare.

`Where-Object`: Filtrare gli Oggetti

Il cmdlet `Where-Object` (alias: `where` o `?`) agisce come un filtro. Riceve una collezione di oggetti e restituisce solo quelli che soddisfano una determinata condizione. È l'equivalente di `array_filter` in PHP o del comando `grep` su Linux, ma per oggetti.

Esempio: Trovare i Servizi di Windows Arrestati

# Get-Service restituisce un oggetto per ogni servizio sul sistema
Get-Service | Where-Object { $_.Status -eq 'Stopped' }

In questo esempio:

  • `Get-Service` invia tutti gli oggetti "servizio" nella pipeline.
  • `Where-Object` esamina ogni oggetto. La variabile speciale `$_` rappresenta l'oggetto corrente nella pipeline.
  • Restituisce solo gli oggetti la cui proprietà `Status` è uguale a "Stopped".

`Select-Object`: Selezionare le Proprietà

Il cmdlet `Select-Object` (alias: `select`) viene usato per scegliere quali proprietà di un oggetto mostrare, per rinominarle o per creare nuove proprietà calcolate. È ottimo per formattare l'output finale.

Esempio: Mostrare Nome e Memoria dei Processi

# Seleziona solo le proprietà Name e WorkingSet (memoria)
Get-Process | Select-Object Name, WorkingSet

Creare Proprietà Calcolate

Puoi anche creare proprietà al volo. Ad esempio, per mostrare la memoria in Megabyte:

Get-Process | Select-Object Name, @{Name='Memory (MB)'; Expression={$_.WorkingSet / 1MB}}

Combinarli Insieme

La vera potenza emerge quando li combini. Esempio: trovare il nome e la memoria (in MB) dei 5 processi che usano più memoria.

Get-Process |
  Sort-Object WorkingSet -Descending |
  Select-Object -First 5 |
  Select-Object Name, @{Name='Memory (MB)'; Expression={[math]::Round($_.WorkingSet / 1MB)}}

Hai bisogno di una soluzione su misura?

Dalla Web App al gestionale custom, trasformiamo le tue idee in software performante. Contattaci per una consulenza gratuita.

Richiedi una consulenza