Introduzione agli esempi di PowerShell di -Like e -NotLike

In questa pagina spiegherò come filtrare i dati con il comparatore -Like di PowerShell.

Un giorno volevo creare uno script WMI usando l’adattatore di rete, ma anche usando PowerShell non riuscivo a trovare le proprietà giuste, così sono tornato alle basi e ho elencato tutte le cmdlets contenenti ‘Adapter’.

Temi per l’operatore PowerShell -Like

  • Differenze tra -Like e -Match
  • Esempio 1: il comparatore -Like di PowerShell
  • Esempio 2: Doppio jolly -Match *Adapter*
  • Esempio 3: Il comparatore -Match invece di -Like
  • Esempio 4: PowerShell -NotLike

Differenze tra -Like e -Match

In poche parole, se stai pensando, ‘Probabilmente avrò bisogno di un carattere jolly per trovare questo elemento’, allora inizia con -Like. Tuttavia, se sei abbastanza sicuro della maggior parte delle lettere della parola che stai cercando, allora è meglio sperimentare con -Match.

Ecco una distinzione più tecnica: -Match è un’espressione regolare, mentre -Like è solo un confronto tra caratteri jolly, un sottoinsieme di -Match.

Esempio 1: il comparatore -Like di PowerShell

Questo esempio elenca solo i cmdlets che finiscono con le lettere ‘adapter’.

# PowerShell -Like Operator# Author: Guy Thomas# Version September 2011 tested on PowerShell v 2.0Clear-HostGet-WmiObject -List | Where-Object {$_.name -Like "*Adapter"}

Punti di apprendimento

Nota 1: Osserva come Get-WmiObject usa il parametro -List.

Nota 2: La maggior parte degli script di comparazione sono introdotti con Where-Object, seguito dalla costruzione della pipeline: $_.

Guy Recommends: Free WMI Monitor for PowerShell (FREE TOOL)

Windows Management Instrumentation (WMI) è uno dei tesori nascosti dei sistemi operativi Microsoft. Fortunatamente, SolarWinds ha creato un Monitor WMI gratuito per PowerShell in modo che tu possa scoprire queste gemme di informazioni sulle prestazioni, e quindi migliorare i tuoi script PowerShell.

Togli la congettura su quali contatori WMI usare quando fai lo scripting del sistema operativo, Active Directory o Exchange Server. Prova questo monitor WMI – è gratuito.

SolarWinds WMI Monitor Download 100% Free Tool

Esempio 2: Double Wildcards -Match *Adapter*

Il problema con l’esempio 1 è che sospetto che ci siano più cmdlets che contengono la parola Adapter, per esempio ‘adapter’ forse nel mezzo del nome della classe WMI.

# PowerShell example to demonstrate -Like# Author: Guy Thomas# Version September 2011 tested on PowerShell v 2.0Clear-HostGet-WmiObject -List | Where-Object {$_.name -Like "*Adapter*"}

Punti di apprendimento

Nota 3: Ancora una volta, rendetevi conto dell’importanza della costruzione $_. Dollaro, trattino basso. Il punto significa ‘in questo flusso di dati’.

Nota 4: Grazie al secondo *, l’esempio 2 dovrebbe restituire più cmdlets.

Vedi altri esempi di PowerShell -Match.

Esempio 3: Il comparatore -Match invece di -Like

Mi piace essere flessibile con i comparatori di PowerShell, se i risultati non sono quelli previsti allora posso provare un’alternativa come -Match o -Contains.

# PowerShell example to check with -Match# Author: Guy Thomas# Version September 2011 tested on PowerShell v 2.0Clear-HostGet-WmiObject -List | Where-Object {$_.name -Match "Adapter"}

Punti di apprendimento

Nota 5: In realtà questo esempio dovrebbe elencare le stesse classi WMI dell’esempio 2, ma in altri script potresti ottenere risultati migliori usando -Match invece di -Like.

Vedi anche -Match di PowerShell”

Guy Recommends: Network Performance Monitor (FREE TRIAL)

SolarWinds Network Performance Monitor (NPM) ti aiuterà a scoprire cosa sta succedendo sulla tua rete. Questa utility vi guiderà anche attraverso la risoluzione dei problemi; il dashboard indicherà se la causa principale è un collegamento interrotto, attrezzature difettose o sovraccarico di risorse.

Quello che mi piace di più è il modo in cui NPM suggerisce soluzioni ai problemi di rete. Ha anche la capacità di monitorare la salute delle singole macchine virtuali VMware. Se siete interessati alla risoluzione dei problemi e alla creazione di mappe di rete, vi consiglio di provare NPM in prova gratuita per 30 giorni.

SolarWinds Network Performance Monitor Download 30-day FREE Trial

Esempio 4: Altri comparatori -NotLike

È ora di fare un riassunto: Il comparatore più semplice è ‘equals’, e il modo in cui lo si codifica in PowerShell con -eq (non =). Tuttavia, in questi esempi, -eq non sarebbe efficace, perché realisticamente dovreste conoscere la risposta prima di poter fare la domanda!

Vorrei cogliere questa opportunità per esaminare altri comparatori. È sorprendente quanto spesso l’operatore negativo -NotLike produca una soluzione ordinata ad un problema di scripting. Per esempio, ci sono diversi WmiObjects che iniziano con CIM, un modo per escluderli sarebbe Not Like “CIM*”.

Inoltre, usando più criteri nel filtro, si può mettere a punto l’output, per raggiungere il mio obiettivo ho aggiunto ‘-And’. Se per qualsiasi motivo -And fallisce ricordate questo, quando si aggiunge un secondo comparatore il segreto è aggiungere un’altra istanza del comparatore ($_.name) dopo il -And.

# PowerShell example to list demonstrate -NotLike with -And# Author: Guy Thomas# Version September tested on PowerShell v 2Clear-Host$WMI = Get-WmiObject -List `| where-Object {$_.name -NotLike "CIM*" -And $_.name -NotLike "__*"}$WMIWrite-Host `n $WMI.count "WMI objects not contain CIM or __"

Punti di apprendimento

Nota 6: La mia missione è sempre quella di farti iniziare. Ora tocca a voi; sperimentate con diversi filtri, sostituite le vostre idee con “CIM” e “__”. Forse la cosa migliore sarebbe combinare -NotLike e -Like.

Nota 7: Ho aggiunto del codice per contare il numero di classi WMI, questo aiuta a vedere quale variazione del mio script restituisce il maggior numero di elementi.

Follow-up

Come al solito con i miei script, la missione è quella di farvi iniziare. Se vuoi saperne di più su -Match, -Like e i loro parenti, allora inizia con l’aiuto di PowerShell, quindi:
Get-Help about_comparison_operators. (Oppure prova Get-Help about*)

Questi file di aiuto introducono un intero mondo di termini specifici, per esempio, ‘confronti tra espressioni regolari’ e ‘confronto con caratteri jolly’. Una volta che hai bisogno e comprendi queste informazioni extra, allora sono riuscito nella mia missione di introdurti a -Match e -Like.

Vedi di più sugli operatori di confronto di PowerShell”

Riassunto dell’operatore PowerShell -Like

Spesso soffriamo di sovraccarico di informazioni. Lavorare con PowerShell non è diverso, tuttavia fornisce tre operatori condizionali per filtrare le informazioni: -Match, -Like e -Contains. Ogni operatore ha diverse proprietà; con la ricerca, potete ottenere solo il filtro di cui avete bisogno, e quindi filtrare il flusso di informazioni desiderato nell’output del vostro script.

Se ti piace questa pagina allora condividila con i tuoi amici

Vedi altri esempi di controllo del flusso di Windows PowerShell

– PowerShell Switch Statement – PowerShell Real-life Techniques – Free Permissions Analyzer

– Differenze tra For, ForEach e ForEach-Object – PowerShell Loops – PowerShell Home

– Operatori condizionali – Do While Loop – PowerShell If Statement – PowerShell Brackets

Si prega di inviarmi un’email se hai uno script di esempio migliore. Inoltre ti prego di segnalare qualsiasi errore fattuale, grammaticale o link rotto, sarò felice di correggere il difetto.

Categorie: Articles

0 commenti

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *