skripty mohou rozhodovat. Jak? Použitím konceptu nazvaného podmíněná logika. Příkaz PowerShell if a konstrukce if / else jsou běžnými způsoby definování podmínek.
Když píšete skripty PowerShell, děláte to s ohledem na konkrétní úkol nebo úkoly. Operace však může mít více než jednu možnou akci na základě jedné nebo více podmínek. V této situaci přichází konstrukce PowerShell If-Else.,
v tomto článku se dozvíte, co je konstrukce PowerShell If-Else, rozumí její syntaxi a jak funguje. Z příkladů se také dozvíte některé z různých způsobů, jak můžete použít PowerShell If-Else k přidání podmíněné logické manipulace do skriptů.
Obsah
Pochopení PowerShell if-Else Syntaxe
PowerShell if-else vyhodnotí jednu nebo více podmíněných výrazů. Níže uvidíte syntaxi příkazu If. Tento styl se někdy nazývá řízení toku.,
if (<test1>) {<statement list 1>}
jak vidíte ze syntaxe výše, každý test je uzavřen v závorce ()
. Testy mohou využívat různé operátory, jako jsou srovnávací operátory a logické operátory,
seznamy výpisů obsahují kód určený ke spuštění, pokud výsledek testu vyhodnotí true.
pak existují tři možné příkazy ve skupině prohlášení If. Toto jsou prohlášení IF, ELSEIF a ELSE.,
-
if
prohlášení obsahuje první test vyhodnotit, následuje první prohlášení seznam uzavřených uvnitř složených závorek{}
.PowerShell if je jediné prohlášení, které musí být přítomno. -
elseif
příkaz je místo, kde přidáte podmínky. Můžete přidat více ElseIf prohlášení, když jste více podmínek. PowerShell vyhodnotí každou z těchto podmínek postupně. -
else
příkaz neakceptuje žádnou podmínku., Seznam prohlášení v tomto prohlášení obsahuje kód, který se má spustit, pokud jsou všechny předchozí testované podmínky nepravdivé.
Pochopení PowerShell if-Else Logiky Toku
, Aby dále pochopit, jak PowerShell Li-Ostatní funguje, musíte se seznámit s jeho logika toku. Níže uvedený diagram ilustruje základní tok PowerShell If-Else.,
Když if se spouští, PowerShell prochází každou podmínku hodnocení, pokud kód vrátí hodnotu true nebo false. Shrnutí chování je níže:
- PowerShell vyhodnotí stav v testu 1.
- pokud výsledek testu 1 vrátí true, spustí se kód uvnitř seznamu příkazů If a PowerShell ukončí příkaz If.,
- pokud výsledek testu 1 vrátí false, PowerShell nadále vyhodnocuje stav (Test n) v dalším příkazu Elsif.
- Pokud je výsledek Testu n vrací false, PowerShell nadále vyhodnocovat stav (Test n) v dalším ElseIf prohlášení, pokud jiný ElseIf prohlášení existuje -NEBO-
- Pokud je výsledek Testu n vrací false, kód v Else běží. Poté PowerShell ukončí příkaz If-nebo –
- pokud výsledek testu n vrátí true, spustí se kód v příkazu Elsif. Poté PowerShell opustí prohlášení If.,
Pomocí PowerShell if-Else
další sekcí je několik příkladů, jak použít PowerShell, zda-Else při psaní skriptů. Techniky, které se naučíte, vás mohou vést k použití prohlášení If, pokud se setkáte se situací v reálném životě, která vyžaduje jeho použití.
single If-Else podmínka
počínaje nejzákladnější je single If prohlášení. Měli byste použít jedno prohlášení if, pokud existuje pouze jedna podmínka pro testování.
níže uvedený příklad testuje, zda je hodnota proměnné $num
větší než 10., Pokud je výsledek pravdivý, zobrazí se na obrazovce výsledek "$num is greater than 10"
. Pokud je výsledek falešný, PowerShell nedělá nic, protože existuje pouze jedna podmínka k testování.
$num = 11if ($num -gt 10) { "$num is greater than 10"}
vložení kódu výše do PowerShell vám poskytne výsledek uvedený níže.,
Nyní, pokud chcete přidat výchozí „fallback“ akce, spíše než jen nechat PowerShell nic dělat, když je výsledek testu false, můžete přidat Else.
V příkladu níže, kód v Else se spustit, pokud je hodnota $num
proměnné NENÍ větší než 10.
$num = 9if ($num -gt 10){ "$num is greater than 10"}else{ "$num is NOT greater than 10"}
spuštěním upraveného kódu v PowerShell získáte níže uvedený výstup.,
Zahájení s PowerShell 7.0, nové syntaxe if má být zaveden pomocí ternární operátor. Jednotlivé příkazy If mohou tuto novou syntaxi dobře využít.
pomocí stejného příkladu výše, takto by kód vypadal u operátora ternary.,
$num = 11$num -gt 10 ? "$num is greater than 10" : "$num is NOT greater than 10"
Více if-Else Podmínky ElseIf
i Když existuje několik podmínek, hodnotit, musíte přidat jeden nebo více ElseIf prohlášení. Každý příkaz ElseIf obsahuje testovací výraz a vlastní kód ke spuštění.,
skript níže, když je spuštěn, bude mít na výzvy pro název ovoce do CTRL+C
úhoz je vydal, nebo uživatel zadá písmeno „X
„.
pak bude příkaz If procházet každou podmínkou v pořadí, dokud nenajde shodu. Pokud by vstup neodpovídal žádné z podmínek,byl by proveden kód uvnitř příkazu Else.
níže je ukázka toho, jak se výše uvedený skript chová při spuštění v PowerShellu.,
Hlášení Volného Místa na Disku Stav
Volného místa na disku hlášení je jeden úkol, který je společný pro systémové administrátory. Obvyklý způsob hlášení informací o prostoru pevných disků na počítači se systémem Windows se točí kolem níže uvedeného kódu.
Get-CimInstance -ClassName CIM_LogicalDisk | Where-Object {$_.DriveType -eq 3}
informace, které se výše uvedený kód vrátí, by vypadaly jako informace uvedené na tomto dalším snímku obrazovky.,
Jak můžete vidět, výstup výše uvedeného vyplývá, písmeno a volný prostor hodnoty, spolu s dalšími vlastnosti. Zatímco výše uvedený výstup je v pořádku, není intuitivní. Způsob, jakým jsou informace prezentovány, nenaznačuje, zda je místo na disku v kritickém nebo varovném stavu nebo normální.,
pomocí příkazu PowerShell If pro zlepšení kódu
pomocí příkazu PowerShell If-Else lze intuitivnější výstup dosáhnout přidáním podmínek pro kontrolu, zda je volné místo nad nebo pod určitými prahovými hodnotami. A tyto prahové hodnoty definují stav volného místa na disku.
příklad skriptu provede následující:
- Pomocí hodnoty proměnné
$Critical
, definovat hranici, do které procent volných prostor bude označen jako kritický., - pomocí hodnoty proměnné
$Warning
definujte práh, na který bude procento volného místa označeno jako varování. - Získejte všechny informace o pevném disku z místního počítače
- smyčka přes všechny informace o disku pro určení volného místa a označení jeho stavu.
- pokud je procento volného místa vyšší než hodnota proměnné
$Warning
, je stav místa na disku označen jako normální., - pokud je procento volného místa vyšší než hodnota proměnné
$Critical
, je stav místa na disku označen jako varování. - pokud je procento volného místa menší nebo rovno hodnotě proměnné
$Critical
, je stav místa na disku označen jako kritický.
- pokud je procento volného místa vyšší než hodnota proměnné
- Vytvořit objekt, vlastnosti
'Drive Letter'
'Drive Name'
'Total Space (GB)'
'Free Space (GB)'
'Free Space (%)'
'Status'
., - Návrat závěrečné zprávy
Zkopírujte níže uvedený kód a uložte skript s názvem Get-DiskSpace.ps1
. Nezapomeňte změnit hodnoty proměnných $Critical
a $Warning
, pokud chcete testovat s různými prahovými hodnotami.
jakmile je skript uložen, otestujte jej voláním jeho jména v PowerShell. Níže je ukázková ukázka toho, jak tento skript funguje.,
Jak můžete vidět z výstupu, stav pro každý disk je určen volného místa na disku, v procentech, která byla výsledkem použití více podmínek s PowerShell if-Else.
Vícenásobné a Vnořené if-Else
řekněme, že máte if-else prohlášení, s podmínkou, definované v else
blok., Při spuštění příkazu if-else se vyvoláelse
, pokud kód uvnitř blokuif
vrátí false.
uvnitř blokuelse
musíte provést další podmíněný test. V důsledku toho potřebujete další prohlášení If-Else. Tento scénář se nazývá vnořené If-Else. Vnořené prohlášení If-Else se běžně používá, pokud vnitřní If-Else závisí na výsledku operace ve vnějším If-Else.
použití více a vnořených příkazů If-Else může být docela matoucí., Klíčovým bodem je zapamatovat si umístění lešení a ujistit se, že odsadíte svůj kód. Odsazení kódu vám pomůže snadno rozpoznat a oddělit vaše prohlášení If-Else.
Příklad Více/Vnořené if-Else
příklad skriptu ukazuje, jak více a vnořené if-Else může být závislá na výsledku navzájem. Logika níže uvedeného kódu je následující.
- Pokud
$SendEmail
$false
, skript bude dělat nic a konec., - Pokud
$SendEmail
$true
, pak$From
$To
proměnné nesmí být prázdné nebo null. V opačném případě bude$abortFlag
nastavena na 1. - Pokud
$SendEmail
$true
$CCEnabled
$true
, pak$CC
proměnné nesmí být prázdné nebo null. V opačném případě bude$abortFlag
nastavena na 1., - Pokud
$SendEmail
$true
$BCCEnabled
$true
, pak$BCC
proměnné nesmí být prázdné nebo null. V opačném případě bude$abortFlag
nastavena na 1. - pokud je hodnota
$abortFlag
1, skript v tomto bodě skončí a nebude pokračovat. - pokud je hodnota
$abortFlag
0, skript pokračuje až do konce.
zkopírujte níže uvedený kód a uložte jej jako Send-MyMail.ps1
. Ještě neměňte žádné hodnoty.,
jakmile soubor uložíte, spusťte jej v PowerShellu, jak je uvedeno níže. Níže uvedená demonstrace ukazuje výsledek skriptu, když se hodnoty proměnných nezmění.
Next, skript upravit a aktualizovat všechny proměnné řádně, jako je tento úryvek níže.
po úpravě proměnných uložte skript a spusťte jej znovu. Měl by vám ukázat stejný výsledek, jak je vidět níže.,
Nyní, upravit proměnné a vyzkoušet různé kombinace, aby vyzkoušet, jak vnořené if-Else budou ovlivněny. Úprava a testování na vlastní pěst vám pomůže pochopit logiku dále.
Shrnutí
V tomto článku, jste se dozvěděli o podmíněné logiky konstrukt – PowerShell If-Else., Použití příkazu If-Else umožňuje skriptům formulovat podmíněnou logiku a řídit akce svých skriptů na základě výsledků testování.
S příklady uvedené v tomto článku, měli byste se naučili způsoby a techniky, jak používat if-Else při vytváření rozhodnutí-řízený kód. If-Else může být jednoduché pomocí jediného stavu a dostane složitější, zatímco budete kopat hlouběji do vnořených If-Else prohlášení.
Co si myslíte o prohlášení If-Else? Je to něco, o čem si myslíte, že byste po přečtení tohoto článku stále více používali?, Jaké další účely si můžete představit, kde můžete uplatnit znalosti, které jste zde získali?
další čtení
- o If
- zpět k základům: smyčka PowerShell foreach