I PowerShell kan du använda villkorliga uttryck för att utföra olika handlingar beroende på om ett villkor är sant eller falskt. Med andra ord ger villkorsstyrda uttryck ett visst resultat beroende på uppställda villkor. Om villkoren uppfylls utförs ett visst kommando eller en grupp av kommando. Två villkorssatser tas upp här, if och switch.
IF
If-satsen tillåter oss att evaluera ett uttryck i vilket ingår ett villkor och om det uppfylls utförs satsen (kommandon i block-koden).
Syntaxen beskriver hur if-satsen kodas: Villkoren placeras mellan parenteser och om de uppfylls exekveras kodblocket som placeras mellan klammerparenteser.
if (villkor) {
Kod som utförs om villkoret är sant
}
Observera att all kod som vi behöver hantera i PowerShell-terminalen ofta sträcker sig över flera rader. Trots det skriver vi allt direkt i samma rad i början, tills vi har lärt oss att använda script i PowerShell. I exemplen kommer koden att presenteras på olika rader för att göra den tydligare och lättare att följa.
Exempel:
- PS C:\>$num = 5
- PS C:\>if ($num -eq 5) {”The value in the variable is 5”}
- Utdata: The value in the variable is 5
- Om det inte hade varit sant hade inte skickats texten till skärmen.
- PS C:\>$myName = ”Chalo Reyes”
- PS C:\>if ($myName -like ”*Chalo*”) {Write-Output ”Your name is Chalo Reyes.”}
- Utdata: Your name is Chalo Reyes.
- eller så här:
- PS C:\>if ($myName.Contains(”Chalo”)) {Write-Output ”Your name is Chalo Reyes.”}
- Utdata: Your name is Chalo Reyes.
- Kontrollera om ett nummer är positivt
- PS C:\>$number = 9
- PS C:\>if ($number -gt 0) { Write-Output ”The number is positive.”}
- Utdata: The number is positive.
- Kontrollera om ett nummer är jämnt delbart med 2:
- PS C:\>$num = 10
- PS C:\>if ($num % 2 -eq 0) { Write-Output ”This number is even.”}
- Utdata: This number is even.
- Kontrollera om två strängar är lika:
- PS C:\>$string1 = ”Chalo”
- PS C:\>$string2 = ”Chalo”
- PS C:\>if ($string1 -eq $string2) { Write-Output ”These strings are equal.”}
IF ELSE
Denna villkorssatsen används när du vill utföra en kod om ett villkor är sant och en annan kod om villkoret är falskt. Här är syntaxen:
if (villkor) {
kod som utförs om villkoret är sant
} else {
Kod som utförs om villkoret är falsk
}
Exempel:
- Är numret större än 5?
- PS C:\>$num = 3
- PS C:\>if ($num -gt 5) {
- >>Write-Out ”This number is greater than 5.”
- >>} else {
- >>Write-Output ”This number is not greater than 5.” }
- Utdata: This number is not greater than 5.
- Får du köpa öl?
- PS C:\>$Age = 18
- PS C:\>if ($Age -lt 18) {
- >>Write-Host ”You are not old enough to buy beer.”
- >>} else {
- >>Write-Host ”You are old enough to buy beer.” }
- utdata: You are old enough to buy beer.
- Godkänd inloggning
- PS C:\>$user = “ChaloReyes”
- PS C:\>if ($user -eq “ChaloReyes”) {
- >>Write-Host “Welcome, Chalo Reyes!”
- >>} else {
- >>Write-Host “Access denied. You are not Chalo Reyes.” }
- Utdata: Welcome, Chalo Reyes!
ELSEIF
Denna villkorssatsen används när man har flera alternativa villkor som man vill testa efter varandra. Det är användbart när man har olika scenarier och man vill exekvera kod baserat på det första sanna villkoret.
Här är syntaxen:
if (villkor1) {
Kod som utförs om villkor1 är sant
} elseif (villkor2) {
Kod som utförs om villkor1 är falskt och villkor2 är sant
} else {
Kod som utförs om inget av villkoren är sant
}
Exempel:
- Jämförelser
- PS C:\>$Value = 10
- if ($value -lt 10) {
- Write-Host -f Yellow ”The value is less than 10”
- } elseif ($value -gt 10) {
- Write-Host -f Cyan ”The value is greater than 10”
- } else {
- Write-Host -f Green ”The value is equal to 10” }
- Utdata: The value is equal to 10
- Vilken årstid?
- PS C:\>$Month = (Get-Date).Month
- PS C:\>if (1,2,3,11,12 -like $Month) {
- >>Write-Output ”Vinter”
- >>} elseif (4,5 -like $Month) {
- >>Write-Output ”Vår”
- >>} elseif (6,7,8 -like $Month) {
- >>Write- Output ”Sommar”
- >>} else {Write-Host ”Höst”}
- Utdata: Vinter
- Hur långt är ditt namn?
- PS C:\>$myName = “Alejandro”
- PS C:\>if ($myName.Length -gt 10) {
- >>Write-Host “The name is longer than 10 characters.”
- >>} elseif ($myName.Length -gt 7) {
- >>Write-Host “The name is between 7 and 10 characters.”
- >>} else {
- >>Write-Host “The name is 7 characters or shorter.” }
- Utdata: The name is between 7 and 10 characters.
elseif är lättare att använda än följande alternativ kodning där evalueras arbetsroll och behörighet i två if-else satser:
- PS C:\>$role = ”admin”
- PS C:\>$permissions = ”write”
- PS C:\>if (($role -eq ”admin”) -or ($role -eq ”manager”)) {
- if ($permissions -eq ”write”) {
- Write-Host ”The user is allowed to perform the action.”
- } else {
- Write-Host ”The user does not have the required permissions.”
- } } else {
- Write-Host ”The user does not have the required role.” }
- Utdata: The user is allowed to perform the action.