PowerShell Grunder -Contains, -CContains & -NotContains Villkorliga operatorer

Windows PowerShell -Contains

När det gäller att filtrera eller hitta data är vi bortskämda med -Match, -Like och -Contains. Även om det finns överlappning har varje villkorlig operatör en distinkt roll i PowerShell scripting.

Contains är bäst för att söka ett exakt värde. Om jag vill att ett kommando ska ge antingen True eller False börjar jag med -Contains, medan om jag vill ha en lista med resultat försöker jag med -Match eller -Like.

Teman för PowerShells villkorliga operatör -Contains

  • Exempel 1: PowerShell -Contains (grundläggande)
  • Exempel 2: Söka ett värde i en samling
  • Exempel 3: PowerShell -Contains Spreadsheet
  • Exempel 4: PowerShell -CContains
  • Exempel 5: PowerShell -NotContains
  • PowerShell -Match
  • PowerShell -Like

Exempel 1a: PowerShell -Contains

PowerShell använder substantiv i singular; ”contains” är alltså ett verb och inte ett substantiv i plural. En egenskap hos -Contains är att den vanligtvis returnerar ”True” (sant) eller ”False” (falskt). Om du letar efter ett kommando som returnerar en lista med värden använder du -Match eller -Like.

# PowerShell -Contains OperatorClear-Host$ArraySimple =@("House","Flat","Bungalow")$ArraySimple -Contains "Flat"# Result PS> True

Exempel 1b: PowerShells -Contains är mycket strikt

Contains kan vara frustrerande eftersom den är så kräsen. Efter ett tag inser du att detta bara är en designfunktion, om du inte gillar den kan du prova -Match.

# PowerShell -Contains OperatorClear-Host$ArraySimple =@("House","Flats","Bungalow")$ArraySimple -Contains "Flat"# Result PS> False

Note 1: -Contains tolkar ”Flats” och ”Flat” som olika och returnerar därför False; det spelar ingen roll att Flat är en delmängd av Flats.

Utmaning: Ersätt -Match med -Contains.

Guy rekommenderar: WMI Monitor for PowerShell (FREE TOOL)

Windows Management Instrumentation (WMI) är en av de dolda skatterna i Microsofts operativsystem. Lyckligtvis har SolarWinds skapat en Free WMI Monitor for PowerShell så att du kan upptäcka dessa pärlor av prestandainformation och på så sätt förbättra dina PowerShell-skript.

Du behöver inte längre gissa dig fram till vilka WMI-räknare du ska använda när du skriver skript för operativsystemet, Active Directory eller Exchange Server. Ge den här WMI-monitorn ett försök – den är gratis.

SolarWinds WMI Monitor Ladda ner 100 % gratis verktyg

Exempel 2: Söka ett värde i en samling

-Contains skulle vara mitt val av villkorliga operatörer för situationer där jag vill testa efter ett visst objekt i en samling, array eller en hashtable.

# PowerShell -Contains$Collection = "Peter Smith", "Paula Harris", "Joan Evans"$Collection -Contains "Paula"# Result PS> False

Note 2: Om du kodade: $Collection -Contains ”Paula Harris”
Resultatet skulle bli: True. Du behöver en exakt matchning av hela objektet.

Exempel 3: PowerShell -Contains Spreadsheet

Låt oss anta att vi vill söka i en fil som heter links.csv. Dessutom kan vi använda Import-Csv för att läsa in data så att vi kan testa värden med -Contains.

Förberedelser
Mitt kalkylblad heter links.csv
Jag lagrade filen i D:\PowerShell
Kolumnnamnet är ”Custom channel”
Se skärmdump till höger.

Guy rekommenderar: Network Performance Monitor (FREE TRIAL)

SolarWinds Network Performance Monitor (NPM) hjälper dig att upptäcka vad som händer i ditt nätverk. Det här verktyget guidar dig också genom felsökning; instrumentpanelen visar om grundorsaken är en trasig länk, felaktig utrustning eller överbelastning av resurser.

Vad jag gillar bäst är det sätt på vilket NPM föreslår lösningar på nätverksproblem. Den har också möjlighet att övervaka hälsan hos enskilda virtuella VMware-maskiner. Om du är intresserad av felsökning och att skapa nätverkskartor rekommenderar jag att du provar NPM på en 30-dagars gratis provperiod.

SolarWinds Network Performance Monitor Ladda ner 30-dagars gratis provperiod

Exempel 4: PowerShell -CContains

Som med PowerShells andra villkorliga operatörer kan du tvinga dem till att vara skiftlägeskänsliga genom att föregå kommandot med ett ”C”; CContains är inte ett skrivfel!

Note 4: Poängen är att i kalkylbladet är värdet tydligt ”LinkTop”, när vi tvingar fram stor- och småskalighet med CContains är detta inte detsamma som ”linktop”, därav ett falskt resultat.

Exempel 5: PowerShell -NotContains

Den negativa -NotContains är inte lika användbar som -NotMatch. Utifrån det vi redan har lärt oss är syntaxen dock förutsägbar.

Note 5: Kom ihåg att med -Contains, och i förlängningen -NotContains, måste matchningen vara exakt. Det finns ingen ”Custom channel” med namnet exakt ”link”.

Se mer om PowerShells -Like jämförelser ”

Guy rekommenderar: SolarWinds Engineer’s Toolset (FREE TRIAL)

Denna Engineer’s Toolset ger en omfattande konsol med 50 verktyg för felsökning av datorproblem. Guy säger att det hjälper mig att övervaka vad som händer i nätverket, och varje verktyg lär mig mer om hur det underliggande systemet fungerar.

Det finns så många bra prylar; det är som att ha fria händer i en godisbutik. Tack och lov visas verktygslådorna logiskt: övervakning, nätverksupptäckt, diagnostik och Cisco-verktyg. Prova SolarWinds Engineer’s Toolset på en 14-dagars gratis provperiod nu!

SolarWinds Engineer’s Toolset Ladda ner 14-dagars GRATIS provperiod

Om_Operatorer

# For even more information about PowerShell Operators try:Get-Help about_Operators

Här är en lista över typerna av PowerShell’s Operators

Se även PowerShell’s -Match ”

Sammanfattning av PowerShells -Contains Conditional Operator

När du söker ett exakt värde, skulle -Contains vara mitt första val av villkorlig operatör. -Match eller -Like lämpar sig bättre för scenarier där du bara behöver en partiell matchning, eller där du behöver en lista med objekt.

Se fler exempel på flödeskontroll i Windows PowerShell

– PowerShell Home – PowerShell If Statement – PowerShell ElseIf – Free Permissions Analyzer

– Conditional Operators – PowerShell -Match – PowerShell -Like – PowerShell -Contains

– PowerShell Comparison Operators – PowerShell Syntax – Where Filter – PowerShell Else

E-posta mig gärna om du har ett bättre exempelskript. Rapportera också gärna eventuella faktafel, grammatiska fel eller trasiga länkar, så rättar jag gärna till felet.

Lämna ett svar

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *