Scripts kunnen beslissingen nemen. Hoe? Door het gebruik van een concept genaamd conditional logic. Het PowerShell if statement en de if / else constructies zijn de gebruikelijke manieren om condities te definiëren.
wanneer u PowerShell-scripts schrijft, doet u dit met een specifieke taak of taken in het achterhoofd. Maar, een operatie kan meer dan een mogelijke actie op basis van een of meer voorwaarden. Deze situatie is waar de PowerShell If-Else constructie komt in.,
in dit artikel zult u leren wat de PowerShell If-Else constructie is, de syntaxis ervan begrijpen en hoe het werkt. Je leert ook van de voorbeelden enkele van de verschillende manieren waarop je PowerShell If-Else kunt gebruiken om voorwaardelijke logische afhandeling toe te voegen aan je scripts.
inhoudsopgave
inzicht in de PowerShell If-Else syntaxis
De PowerShell if-else construct evalueert een of meer voorwaardelijke expressies. Hieronder zie je de If statement syntaxis. Deze stijl wordt ook wel flow control genoemd.,
if (<test1>) {<statement list 1>}
zoals u kunt zien in de syntaxis hierboven, staat elke test tussen haakjes ()
. Tests kunnen gebruik maken van verschillende operators, zoals vergelijking operators en logische operators,
De statement lijsten bevatten de code die moet worden uitgevoerd als het resultaat van de test evalueert naar true.
dan zijn er drie mogelijke statements in een IF statement groep. Dit zijn de IF, ELSEIF en ELSE verklaringen.,
- Het
if
statement bevat de eerste te evalueren test, gevolgd door de eerste statementlijst tussen de accolades{}
.Het PowerShell if statement is het enige statement dat nodig is om aanwezig te zijn. - het
elseif
statement is waar je Voorwaarden toevoegt. U kunt meerdere ElseIf statements toevoegen wanneer u meerdere voorwaarden. PowerShell zal elk van deze voorwaarden achtereenvolgens evalueren. - de verklaring
else
accepteert geen enkele voorwaarde., De statement list in deze statement bevat de code die moet worden uitgevoerd als alle eerdere geteste voorwaarden onwaar zijn.
inzicht in de PowerShell If-Else Logic Flow
om verder te begrijpen hoe de PowerShell If-Else werkt, moet u vertrouwd raken met de logische flow. Het diagram hieronder illustreert de basisstroom van de PowerShell If-Else.,
wanneer het if statement wordt uitgevoerd, loopt PowerShell door elke voorwaarde om te evalueren of de code true of false retourneert. Een samenvatting van het gedrag is hieronder:
- PowerShell evalueert de conditie in Test 1.
- als het resultaat van Test 1 true retourneert, wordt de code in de lijst met If-statement uitgevoerd, waarna PowerShell het if-statement verlaat.,
- als het resultaat van Test 1 false geeft, blijft PowerShell de conditie (Test n) evalueren in het volgende ElseIf-statement.
- als het resultaat van Test n false retourneert, blijft PowerShell de conditie (Test n) evalueren in het volgende ElseIf-statement, als er een ander ElseIf-statement bestaat-of –
- als het resultaat van Test n false retourneert, wordt de code in het ElseIf-statement uitgevoerd. Vervolgens zal PowerShell het If statement-OR-
- afsluiten als het resultaat van Test n true retourneert, wordt de code in het ElseIf statement uitgevoerd. Vervolgens zal PowerShell het If statement afsluiten.,
gebruikmakend van het PowerShell If-Else Statement
de volgende secties zijn enkele voorbeelden van het gebruik van het PowerShell If-Else statement bij het schrijven van scripts. De technieken die u zult leren kunnen u begeleiden in het gebruik van de IF statement moet u een real-life situatie die het gebruik ervan vereist tegenkomen.
Single If-Else voorwaarde
beginnend met de meest basale is het single If statement. Je moet een enkele if-verklaring gebruiken als er maar één voorwaarde is om te testen.
in onderstaand voorbeeld wordt getest of de waarde van de variabele $num
groter is dan 10., Als het resultaat waar is, dan wordt het resultaat met "$num is greater than 10"
op het scherm weergegeven. Als het resultaat onwaar is, doet PowerShell niets omdat er maar één voorwaarde is om te testen.
$num = 11if ($num -gt 10) { "$num is greater than 10"}
het plakken van de bovenstaande code in PowerShell geeft u het onderstaande resultaat.,
Als u nu een standaard “fallback” – actie wilt toevoegen in plaats van alleen PowerShell niets te laten doen als het testresultaat onwaar is, kunt u toevoegen de else verklaring.
in het voorbeeld hieronder zal de code in het else Commando worden uitgevoerd als de waarde van de $num
variabele niet groter is dan 10.
$num = 9if ($num -gt 10){ "$num is greater than 10"}else{ "$num is NOT greater than 10"}
het uitvoeren van de gewijzigde code in PowerShell geeft u de uitvoer hieronder.,
beginnend met PowerShell 7.0 is een nieuwe syntaxis voor het if statement geïntroduceerd met behulp van een ternaire operator. Single If statements kan goed gebruik maken van deze nieuwe syntaxis.
gebruikmakend van hetzelfde voorbeeld hierboven, is dit hoe de code eruit zou zien met de ternaire operator.,
$num = 11$num -gt 10 ? "$num is greater than 10" : "$num is NOT greater than 10"
Meerdere If-Else-Voorwaarden met ElseIf
Wanneer er meerdere voorwaarden te evalueren, u moet toevoegen van een of meer ElseIf statements. Elk ElseIf statement bevat de testuitdrukking en zijn eigen code om uit te voeren.,
het onderstaande script, wanneer uitgevoerd, zal blijven vragen om een fruit naam totdat de CTRL+C
toetsaanslag is uitgegeven, of de gebruiker de letter “X
“invoert.
dan zal het if statement elke voorwaarde in volgorde doorlopen totdat het een overeenkomst vindt. Als de invoer niet overeenkwam met een van de voorwaarden, zou de code in het else statement worden uitgevoerd.
Hieronder is de demonstratie van hoe het bovenstaande script zich gedraagt bij het draaien in PowerShell.,
het rapporteren van de Status van vrije schijfruimte
het rapporteren van vrije schijfruimte is een taak die gebruikelijk is voor systeembeheerders. De gebruikelijke manier van het rapporteren van de ruimte informatie van vaste schijven op een Windows-machine draait om de code hieronder.
Get-CimInstance -ClassName CIM_LogicalDisk | Where-Object {$_.DriveType -eq 3}
de informatie die de bovenstaande code retourneert, zou er ongeveer uitzien als de informatie die in de volgende schermafbeelding wordt getoond.,
zoals u kunt zien, toont de uitvoer hierboven de stationsletter en de vrije ruimte waarden, samen met andere eigenschappen. Hoewel de output hierboven is prima, het is niet intuã tief. De manier waarop de informatie wordt gepresenteerd geeft niet aan of de schijfruimte zich in een kritieke of waarschuwingstoestand of normaal bevindt.,
met behulp van een PowerShell If-Statement om de Code te verbeteren
met behulp van het PowerShell If-Else-statement kan een meer intuïtieve uitvoer worden bereikt door voorwaarden toe te voegen om te controleren of de vrije ruimte boven of onder bepaalde drempels ligt. En deze drempels bepalen de status van de vrije schijfruimte.
het voorbeeldscript hieronder voert het volgende Uit:
- met behulp van de waarde van de variabele
$Critical
, definieer de drempel tot welke het percentage vrije ruimte als kritiek wordt gemarkeerd., - met behulp van de waarde van de variabele
$Warning
, definieer de drempel tot welke het percentage vrije ruimte als waarschuwing wordt gemarkeerd. - haal alle vaste schijfinformatie van de lokale machine
- Loop door alle schijfinformatie om vrije ruimte te bepalen en de status ervan te taggen.
- als het percentage vrije ruimte hoger is dan de waarde van de variabele
$Warning
, wordt de status van schijfruimte als normaal gemarkeerd., - als het percentage vrije ruimte hoger is dan de waarde van de variabele
$Critical
, wordt de status van schijfruimte gemarkeerd als waarschuwing. - als het percentage vrije ruimte kleiner is dan of gelijk is aan de waarde van de
$Critical
variabele, wordt de status van de schijfruimte gemarkeerd als kritiek.
- als het percentage vrije ruimte hoger is dan de waarde van de variabele
- Stel de objecteigenschappen op
'Drive Letter'
,'Drive Name'
,'Total Space (GB)'
,'Free Space (GB)'
,'Free Space (%)'
, en'Status'
., - retourneer het eindrapport
kopieer onderstaande code en sla het script op met de bestandsnaam Get-DiskSpace.ps1
. Vergeet niet om de waarden van de $Critical
en $Warning
variabelen te wijzigen als u met verschillende drempels wilt testen.
zodra het script is opgeslagen, test het door zijn naam aan te roepen in PowerShell. Hieronder vindt u een voorbeeld van hoe dit script werkt.,
zoals u kunt zien aan de uitvoer, wordt de status voor elke schijf bepaald door het percentage vrije schijfruimte, dat het resultaat was van het gebruik van meerdere voorwaarden met PowerShell if-else.
meerdere en geneste If-Else
stel dat je een if-else statement hebt met een voorwaarde gedefinieerd in hetelse
blok., Als het if-else commando wordt uitgevoerd, wordt het else
blok aangeroepen als de code in het if
blok false retourneert.
binnen hetelse
blok, moet u een andere voorwaardelijke test uitvoeren. Als gevolg daarvan heb je een andere If-Else verklaring nodig. Dit scenario wordt een geneste If-Else genoemd. Het geneste If-Else statement wordt vaak gebruikt als de binnenste If-Else afhankelijk is van het resultaat van de operatie in de buitenste If-Else.
het gebruik van meerdere en geneste If-Else statements kan behoorlijk verwarrend zijn., Het belangrijkste punt is om de plaatsing van de steiger te onthouden en ervoor te zorgen dat u uw code inspringt. Het inspringen van uw code zal u helpen gemakkelijk uw If-Else verklaringen te herkennen en te scheiden.
voorbeeld van meerdere / geneste if-Else Statements
het voorbeeld script hieronder laat zien hoe meerdere en geneste If-Else afhankelijk kunnen zijn van het resultaat van elkaar. De logica van de code hieronder is als volgt.
- als de
$SendEmail
is$false
, zal het script niets doen en stoppen., - als de
$SendEmail
is$true
, dan mogen de$From
en$To
niet leeg of null zijn. Anders wordt$abortFlag
ingesteld op 1. - als de
$SendEmail
is$true
en de$CCEnabled
is$true
, dan mag de$CC
niet leeg of null zijn. Anders wordt$abortFlag
ingesteld op 1., - als de
$SendEmail
is$true
en de$BCCEnabled
is$true
, dan mag de$BCC
niet leeg of null zijn. Anders wordt$abortFlag
ingesteld op 1. - als de waarde
$abortFlag
1 is, zal het script op dit punt stoppen en niet doorgaan. - als de waarde
$abortFlag
0 is, gaat het script door tot het einde.
kopieer onderstaande code en sla deze op als Send-MyMail.ps1
. Verander nog geen waarden.,
zodra u het bestand hebt opgeslagen, voert u het uit in PowerShell zoals hieronder weergegeven. De demonstratie hieronder toont het resultaat van het script wanneer de variabele waarden onveranderd blijven.
volgende, bewerk het script en update alle variabelen correct zoals dit fragment hieronder.
sla na het bewerken van de variabelen het script op en voer het opnieuw uit. Het moet u hetzelfde resultaat, zoals hieronder te zien.,
wijzig nu de variabelen en probeer verschillende combinaties om te testen hoe de geneste If-Else zal worden beïnvloed. Aanpassen en testen op uw eigen zou u helpen begrijpen van de logica verder.
samenvatting
In dit artikel hebt u geleerd over de conditionele logica – de PowerShell If-Else-constructie., Met het If-Else statement kunnen scripters conditionele logica formuleren en de acties van hun scripts sturen op basis van testresultaten.
met de voorbeelden die in dit artikel worden getoond, zou u manieren en technieken moeten hebben geleerd hoe u het If-Else statement kunt gebruiken bij het maken van een beslissingsgestuurde code. If-Else kan eenvoudig zijn met behulp van een enkele voorwaarde en wordt complexer terwijl je dieper graaft in de geneste if-Else statements.
Wat vindt u van het if-Else statement? Is dit iets dat je denkt dat je meer en meer zou gebruiken na het lezen van dit artikel?, Welke andere doeleinden kun je bedenken waar je de kennis die je hier hebt verworven kunt toepassen?
verder lezen
- over If
- terug naar de basis: de PowerShell foreach-lus