Welcome to Our Website

Adam Automatorn

skript kan fatta beslut. Hur? Genom att använda ett koncept som kallas villkorlig logik. PowerShell if-uttalandet och if / else-konstruktionerna är de vanliga sätten att definiera villkor.

När du skriver PowerShell-skript gör du det med en specifik uppgift eller uppgifter i åtanke. Men en operation kan ha mer än en möjlig åtgärd baserad på ett eller flera villkor. Denna situation är där PowerShell If-Else-konstruktionen kommer in.,

i den här artikeln kommer du att lära dig vad PowerShell If-Else construct är, förstå dess syntax och hur det fungerar. Du kommer också att lära av exemplen några av de olika sätt som du kan använda PowerShell If-Else för att lägga till villkorlig logikhantering i dina skript.

Innehållsförteckning

förstå PowerShell If-Else Syntax

PowerShell if-else construct utvärderar ett eller flera villkorliga uttryck. Nedan ser du If-satsens syntax. Denna stil kallas ibland flödeskontroll.,

if (<test1>) {<statement list 1>}

som du kan se från syntaxen ovan är varje test inneslutet i en parentes (). Tester kan använda sig av olika operatörer som jämförelseoperatörer och logiska operatörer,

uttalandelistorna innehåller koden som är avsedd att köras om resultatet av testet utvärderar till Sant.

då finns det tre möjliga uttalanden i en If-grupp. Det här är IF, ELSEIF, och andra uttalanden.,

  • if uttalande innehåller det första testet för att utvärdera, följt av den första uttalande listan inneslutna i lockigt fästen{}.PowerShell om uttalande är det enda uttalande som krävs för att vara närvarande.
  • elseif – satsen är där du lägger till villkor. Du kan lägga till flera ElseIf uttalanden när du flera villkor. PowerShell kommer att utvärdera var och en av dessa villkor sekventiellt.
  • else – uttalandet accepterar inte något villkor., Satslistan i detta uttalande innehåller koden som ska köras om alla tidigare testade förhållanden är falska.

förstå PowerShell If-Else Logic Flow

för att ytterligare förstå hur PowerShell If-Else fungerar måste du bekanta dig med dess logiska flöde. Diagrammet nedan illustrerar det grundläggande flödet av PowerShell If-Else.,

PowerShell If-Else Logic Flow

När if-uttalandet körs går PowerShell igenom varje villkor som utvärderar om koden returnerar sant eller falskt. En sammanfattning av beteendet är nedan:

  • PowerShell utvärderar tillståndet i Test 1.
  • om resultatet av Test 1 returnerar sant kommer koden i If-satslistan att köras och PowerShell avslutar If-satsen.,
  • Om resultatet av Test 1 returnerar falskt fortsätter PowerShell att utvärdera tillståndet (Test n) i nästa ElseIf-uttalande.
  • Om resultatet av Test n returnerar falskt fortsätter PowerShell att utvärdera tillståndet (Test n)i nästa ElseIf-uttalande, om ett annat ElseIf-uttalande finns-eller –
  • om resultatet av Test n returnerar FALSKT körs koden i else-satsen. Då kommer PowerShell att avsluta If-satsen-eller –
  • om resultatet av Test n returnerar sant körs koden i ElseIf-satsen. Då kommer PowerShell att avsluta If-uttalandet.,

använda Powershell If-Else-satsen

nästa avsnitt är flera exempel på hur du använder PowerShell If-Else-satsen när du skriver skript. De tekniker du lär dig kan vägleda dig att använda If-uttalandet om du stöter på en verklig situation som kräver dess användning.

Single If-Else Condition

Från och med den mest grundläggande är single If-satsen. Du bör använda ett enda if-uttalande när det bara finns ett villkor att testa.

exemplet nedan testar om värdet för variabeln$num är större än 10., Om resultatet är sant visas resultatet som säger "$num is greater than 10" på skärmen. Om resultatet är falskt, gör PowerShell ingenting eftersom det bara finns ett villkor att testa.

$num = 11if ($num -gt 10) { "$num is greater than 10"}

klistra in koden ovan i PowerShell ger dig resultatet som visas nedan.,

Single If Condition Example

Nu, om du vill lägga till en standard ”fallback” – åtgärd snarare än att bara låta PowerShell göra ingenting när testresultatet är falskt, kan du lägga till else-uttalandet.

i exemplet nedan körs koden i else-satsen om värdet för variabeln$num inte är större än 10.

$num = 9if ($num -gt 10){ "$num is greater than 10"}else{ "$num is NOT greater than 10"}

Om du kör den ändrade koden i PowerShell får du den utgång som visas nedan.,

Single If condition

Från och med PowerShell 7.0 har en ny syntax för if-uttalandet införts med en ternär operatör. Single If uttalanden kan göra god användning av denna nya syntax.

med samma exempel ovan ser koden ut så här med den ternära operatören.,

$num = 11$num -gt 10 ? "$num is greater than 10" : "$num is NOT greater than 10"
If statement syntax using ternary operator

Multiple If-Else Conditions with ElseIf

När det finns flera villkor för att utvärdera, du måste lägga till en eller flera ElseIf uttalanden. Varje ElseIf-uttalande innehåller testuttrycket och dess egen kod att köra.,

skriptet nedan, när det körs, kommer att fortsätta att fråga efter ett fruktnamn tills CTRL+C tangenttryckning utfärdas, eller användaren matar in bokstaven ”X”.

då kommer If-satsen att gå igenom varje tillstånd i följd tills den hittar en matchning. Om inmatningen inte matchade något av villkoren skulle koden i else-uttalandet utföras.

nedan visas hur skriptet ovan beter sig när det körs i PowerShell.,

Multiple If-Else conditions

rapportering av ledigt diskutrymme Status

rapportering av ledigt diskutrymme är en uppgift som är gemensam för systemadministratörer. Det vanliga sättet att rapportera rymdinformationen för fasta diskar på en Windows-dator kretsar kring koden nedan.

Get-CimInstance -ClassName CIM_LogicalDisk | Where-Object {$_.DriveType -eq 3}

den information som koden ovan kommer att returnera skulle se ut som den som visas i nästa skärmdump.,

rapport om vanligt diskutrymme

som du kan se visar utmatningen ovan enhetsbeteckningen och de fria utrymmesvärdena tillsammans med andra egenskaper. Medan utgången ovan är bra är det inte intuitivt. Hur informationen presenteras indikerar inte om diskutrymmet är i ett kritiskt eller varningsläge eller normalt.,

använda ett PowerShell If-uttalande för att förbättra koden

med PowerShell If-Else-uttalandet kan en mer intuitiv utgång uppnås genom att lägga till villkor för att kontrollera om ledigt utrymme är över eller under vissa tröskelvärden. Och dessa tröskelvärden definierar statusen för ledigt diskutrymme.

exempelskriptet nedan utför följande:

  • med hjälp av värdet på variabeln $Critical definierar du tröskeln till vilken procentandelen ledigt utrymme kommer att märkas som kritisk.,
  • med hjälp av värdet på variabeln$Warning definierar du tröskeln till vilken procentandelen ledigt utrymme kommer att märkas som varning.
  • få all fast diskinformation från den lokala datorn
  • bläddra igenom all diskinformation för att bestämma ledigt utrymme och märka dess status.
    • om procentandelen ledigt utrymme är högre än värdet för variabeln$Warning är statusen för diskutrymme taggad som normal.,
    • om procentandelen ledigt utrymme är högre än värdet för variabeln $Critical taggas statusen diskutrymme som varning.
    • om procentandelen fritt utrymme är mindre än eller lika med värdet för variabeln $Critical är statusen för diskutrymme taggad som kritisk.
  • komponera objektegenskaperna'Drive Letter','Drive Name','Total Space (GB)','Free Space (GB)','Free Space (%)' och'Status'.,
  • returnera slutrapporten

kopiera koden nedan och spara skriptet med filnamnetGet-DiskSpace.ps1. Glöm inte att ändra värdena för variablerna$Critical och$Warning om du vill testa med olika tröskelvärden.

När skriptet har sparats, testa det genom att ringa sitt namn i PowerShell. Nedan är provdemonstrationen av hur det här skriptet fungerar.,

Kommandoutmatning för Ledigt hårddiskutrymme

som du kan se från utgången bestäms statusen för varje disk av den fria diskutrymme, vilket var resultatet av att använda flera villkor med PowerShell If-Else.

Multiple and Nested If-Else

låt oss säga att du har ett if-else-uttalande med ett villkor som definieras ielse – blocket., När if-else-satsen körs anropas else – blocket om koden inuti if – blocket returnerar FALSKT.

inutielse – blocket måste du utföra ett annat villkorligt test. Som ett resultat behöver du ett annat If-Else-uttalande. Detta scenario kallas en kapslad If-Else. Det kapslade If-Else-uttalandet används ofta om det inre If-Else beror på resultatet av operationen i det yttre If-Else.

använda flera och kapslade If-Else uttalanden kan vara ganska förvirrande., Den viktigaste punkten är att komma ihåg ställningen placering och se till att du indrag din kod. Indragning av din kod hjälper dig att enkelt känna igen och skilja dina If-Else-uttalanden.

exempel på flera/kapslade if-Else-satser

exemplet nedan visar hur flera och kapslade If-Else kan vara beroende av resultatet av varandra. Logiken i koden nedan är som följer.

  • Om $SendEmail är $false, kommer skriptet att göra ingenting och avsluta.,
  • Om$SendEmail är$true, får variablerna$From och$To inte vara tomma eller null. Annars kommer$abortFlag att ställas in på 1.
  • Om$SendEmail är$true och$CCEnabled är$true, får variabeln$CC inte vara tom eller null. Annars kommer$abortFlag att ställas in på 1.,
  • Om$SendEmail är$true och$BCCEnabled är$true, får variabeln$BCC inte vara tom eller null. Annars kommer$abortFlag att ställas in på 1.
  • om värdet$abortFlag är 1, avslutas skriptet vid denna tidpunkt och fortsätter inte.
  • om värdet$abortFlag är 0 fortsätter skriptet till slutet.

kopiera koden nedan och spara den somSend-MyMail.ps1. Ändra inte några värden ännu.,

När du har sparat filen, kör den i PowerShell som visas nedan. Demonstrationen nedan visar resultatet av skriptet när variabelvärdena går oförändrade.

kapslade If-Else exempel

därefter redigerar du skriptet och uppdaterar alla variabler korrekt som det här snippet nedan.

Efter att ha redigerat variablerna, spara skriptet och kör det igen. Det ska visa dig samma resultat, som framgår nedan.,

ett annat kapslat if-else-exempel

ändra nu variablerna och prova olika kombinationer för att testa hur kapslade If-Else kommer att påverkas. Modifiera och testa på egen hand skulle hjälpa dig att förstå logiken ytterligare.

sammanfattning

i den här artikeln lärde du dig om den villkorliga logikkonstruktionen – PowerShell If-Else-konstruktionen., Med If-Else-satsen kan skrifterna formulera villkorlig logik och styra sina skripts åtgärder baserat på testresultat.

med exemplen som visas i den här artikeln borde du ha lärt dig sätt och tekniker för hur du använder If-Else-satsen när du skapar en beslutsdriven kod. If-Else kan vara enkelt med ett enda tillstånd och blir mer komplex medan du gräver djupare in i de kapslade If-Else-uttalandena.

vad tycker du om If-Else-uttalandet? Är detta något som du tror att du skulle använda mer och mer efter att ha läst den här artikeln?, Vilka andra syften kan du tänka på var du kan tillämpa den kunskap du har förvärvat här?

Ytterligare läsning

  • Om Om
  • tillbaka till grunderna: PowerShell foreach Loop

Lämna ett svar

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