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.
0 commenti