Hoe PowerShell If-statements te gebruiken om conditionele logica aan uw scripts toe te voegen

PowerShell is een krachtige scripttaal om vele redenen. Een van die redenen is de ondersteuning voor conditionele logica, die je kan helpen om je PowerShell-scripts te optimaliseren en effectiever te maken. In dit artikel ga ik je leren hoe je If, Else en Elseif conditionele logica kunt gebruiken en uitleggen hoe dit je kan helpen als PowerShell-scriptschrijver.

Hoe de PowerShell If-verklaring te gebruiken

PowerShell If -verklaringen worden gebruikt om de conditionele uitvoering van code uit te voeren. Ze laten je toe om een voorwaarde te testen en verschillende codeblokken uit te voeren op basis van of de voorwaarde waar of onwaar is.

Laten we beginnen met twee voorbeelden die laten zien hoe je PowerShell If-verklaringen kunt gebruiken.

Voorbeeld 1: Controleren of een getal positief of negatief is

In het volgende voorbeeld hebben we een variabele, $number, ingesteld op 10. De If-verklaring controleert of de waarde van $number groter is dan 0 met behulp van de -gt-operator.

  • Wanneer de voorwaarde waar is, voert het het codeblok uit binnen de eerste set accolades, die in dit geval “Het getal is positief” afdrukt.
  • Wanneer de voorwaarde onwaar is, gaat het naar het Elseif-blok en controleert of het getal kleiner is dan 0 met behulp van de -lt-operator.
  • Als de voorwaarde waar is, voert het de code uit binnen de tweede set accolades, waarbij “Het nummer is negatief” wordt afgedrukt.
  • Als beide voorwaarden onwaar zijn, voert het de code uit binnen het anders blok, waarbij “Het nummer is nul” wordt afgedrukt.
$number = 10

if ($number -gt 0) {
    Write-Host “The number is positive.”
} elseif ($number -lt 0) {
    Write-Host “The number is negative.”
} else {
    Write-Host “The number is zero.”
}
Checking if a number is positive or negative (Image credit: Petri/Bill Kindle)

Voorbeeld 2: Controleren of een bestand bestaat

In dit volgende voorbeeld hebben we een variabele, $bestand, ingesteld op het pad van een bestand. De If-verklaring gebruikt de Test-Path cmdlet om te controleren of het bestand bestaat.

  • Als de voorwaarde waar is, wat betekent dat het bestand bestaat, voert het de code uit binnen de eerste set accolades, waarbij “Het bestand bestaat” wordt afgedrukt.
  • Als de voorwaarde onwaar is, voert het de code uit binnen het anders blok, waarbij “Het bestand bestaat niet” wordt afgedrukt.
$file = “C:\path\to\file.txt”

if (Test-Path $file) {
    Write-Host “The file exists.”
} else {
    Write-Host “The file does not exist.”
}
Checking if a file exists (Image credit: Petri/Bill Kindle)

Dit waren slechts twee basisvoorbeelden van hoe voorwaardelijke verklaringen werken in PowerShell. Laten we doorgaan naar de Else-verklaring.

Hoe de PowerShell Else-verklaring te gebruiken met de If-verklaring

In PowerShell kun je de Else verklaring gebruiken met de If verklaring om conditionele logica te creëren. Het stelt je in staat om een blok code te specificeren dat moet worden uitgevoerd wanneer de voorwaarde in de If verklaring onwaar is.

Laat me je twee voorbeelden geven van hoe je Else verklaringen kunt gebruiken in PowerShell.

Voorbeeld 3: Controleren of een variabele groter is dan een getal

In dit voorbeeld doen we verschillende controles:

  • De If verklaring controleert of de variabele $number groter is dan 10.
  • Als dat zo is, wordt de boodschap “Het getal is groter dan 10” weergegeven.
  • Als het niet aan de voorwaarde voldoet, wordt het Else blok uitgevoerd en wordt de boodschap “Het getal is niet groter dan 10” weergegeven.
$number = 5

if ($number -gt 10) {
    Write-Host “The number is greater than 10.”
}
else {
    Write-Host “The number is not greater than 10.”
}
Checking if a variable is greater than a number (Image credit: Petri/Bill Kindle)

Voorbeeld 4: Het vergelijken van de waarde van een variabele met een string

In dit voorbeeld vergelijkt de If verklaring de waarde van de $user variabele met de string “John”.

  • Als ze gelijk zijn, wordt de boodschap “Welkom, John!” weergegeven.
  • Als het niet aan de voorwaarde voldoet, wat betekent dat de waarde van $user niet “John” is, wordt het Else blok uitgevoerd en wordt de boodschap “Toegang geweigerd. Je bent niet John.” weergegeven.
$user = “John”

if ($user -eq “John”) {
    Write-Host “Welcome, John!”
}
else {
    Write-Host “Access denied. You are not John.”
}
Comparing the value of a variable with a string (Image credit: Petri/Bill Kindle)

Het verschil tussen een If en Else statement ligt in de voorwaarden die ze evalueren en de daaropvolgende acties die ze uitvoeren.

  • Een If statement controleert een voorwaarde en voert code uit als de voorwaarde waar is.
  • Een Else statement biedt een alternatief blok code dat moet worden uitgevoerd wanneer de voorwaarde in het If statement onwaar is. Als de voorwaarde in het If statement waar is, wordt het Else blok niet uitgevoerd.

Om samen te vatten, het If statement stelt je in staat om code uit te voeren op basis van een specifieke voorwaarde. Het Else statement biedt een fallback-optie wanneer de voorwaarde onwaar is. Door deze statements samen te gebruiken, kun je meer flexibele en robuuste logica creëren in je PowerShell-scripts.

Hoe PowerShell ElseIf statements te gebruiken

ElseIf statements worden gebruikt om een voorwaarde te creëren die controleert of het voorafgaande If statement of enig voorafgaand ElseIf statements ‘onwaar’ evalueren. ElseIf statements stellen je in staat om meerdere voorwaarden te testen en verschillende codeblokken uit te voeren op basis van de evaluatie van die voorwaarden. Het ElseIf statement is vooral handig wanneer je meer dan twee uitkomsten hebt.

Hier zijn twee voorbeelden die het gebruik van ElseIf statements in PowerShell laten zien.

Voorbeeld 5: Het controleren van het bereik van een getal

In dit voorbeeld controleert de code de waarde van de variabele $number en voert verschillende codeblokken uit op basis van zijn bereik.

  • Als het nummer kleiner is dan 10, is de eerste voorwaarde waar en wordt het overeenkomstige bericht weergegeven.
  • Als dat niet het geval is, controleren we de volgende voorwaarde met behulp van de ElseIf-verklaring. Wanneer het nummer tussen 10 en 19 ligt (inclusief), is de tweede voorwaarde waar en wordt het overeenkomstige bericht weergegeven.
  • Als geen van de vorige voorwaarden waar is, wordt het Else-blok uitgevoerd en wordt een bericht weergegeven waarin staat dat het nummer 20 of groter is.
$number = 25

if ($number -lt 10) {
    Write-Host “The number is less than 10.”
}
elseif ($number -ge 10 -and $number -lt 20) {
    Write-Host “The number is between 10 and 19.”
}
else {
    Write-Host “The number is 20 or greater.”
}
Checking a number’s range (Image credit: Petri/Bill Kindle)

Voorbeeld 6: Het controleren van de lengte van een string

In dit voorbeeld onderzoekt de code de lengte van de $name-string en bepaalt de categorie ervan op basis van de lengte.

  • Als de naam meer dan 10 tekens bevat, is de eerste voorwaarde waar en wordt het overeenkomstige bericht weergegeven.
  • Als de eerste voorwaarde onwaar is, controleren we de volgende voorwaarde met behulp van de ElseIf-verklaring. Als de naam meer dan 5 tekens bevat (maar niet meer dan 10), is de tweede voorwaarde waar en wordt het overeenkomstige bericht weergegeven.
  • Als geen van de vorige voorwaarden waar is, wordt het Else-blok uitgevoerd en wordt een bericht weergegeven waarin staat dat de naam 5 tekens of korter is.
$name = “John”

if ($name.Length -gt 10) {
    Write-Host “The name is longer than 10 characters.”
}
elseif ($name.Length -gt 5) {
    Write-Host “The name is between 6 and 10 characters.”
}
else {
    Write-Host “The name is 5 characters or shorter.”
}
Checking a string’s length (Image credit: Petri/Bill Kindle)

Over het algemeen geven ElseIf-verklaringen in PowerShell de voorwaarden aan om te controleren wanneer de voorgaande verklaringen onwaar zijn. Ze bieden een manier om meerdere voorwaarden te behandelen en verschillende codeblokken dienovereenkomstig uit te voeren.

Hoe PowerShell AND/OR-statements te gebruiken met If-statements

In PowerShell zijn “EN” en “OF” logische operators die worden gebruikt om meerdere voorwaarden te combineren in conditionele statements om de flow van je script te controleren. Ze kunnen worden gebruikt met If-statements om meerdere voorwaarden tegelijkertijd te evalueren:

Laat me je twee voorbeelden geven om hun gebruik te tonen en de verschillen te benadrukken ten opzichte van IfElse-statements.

Voorbeeld 7: Het gebruik van de EN-operator

Stel dat je PowerShell wilt gebruiken om te controleren of een gebruiker een beheerder is en of hun account momenteel actief is. Je kunt de EN-operator gebruiken om beide voorwaarden tegelijkertijd te evalueren.

In dit voorbeeld controleert het script of zowel de variabelen $isAdministrator als $isAccountActive waar zijn. Als beide voorwaarden waar zijn, geeft het script een bericht weer waarin staat dat de gebruiker een beheerder is met een actief account. Anders geeft het een bericht weer waarin staat dat ofwel de gebruiker geen beheerder is, of hun account inactief is.

$user = “John”
$isAdministrator = $true
$isAccountActive = $false

if ($isAdministrator -and $isAccountActive) {
    Write-Host “$user is an administrator with an active account.”
} else {
    Write-Host “$user is not an administrator, or their account is inactive.”
}
Checking if a user is an administrator and if their account is currently active (Image credit: Petri/Bill Kindle)

Voorbeeld 8: Het gebruik van de “OF”-operator

Laten we zeggen dat je wilt controleren of een server draait op Windows Server 2016 of Windows Server 2019. Met PowerShell kun je de OF operator gebruiken om deze voorwaarden te evalueren.

In dit voorbeeld gebruikt het script de OF operator om te controleren of de variabele $osVersion gelijk is aan “Windows Server 2016” of “Windows Server 2019”. Als de voorwaarde waar is, wordt een bericht afgedrukt waarin staat dat de server een ondersteund besturingssysteem draait. Anders wordt een bericht afgedrukt waarin staat dat de server een niet-ondersteund besturingssysteem draait.

$server = “Server01”
$osVersion = “Windows Server 2012”

if ($osVersion -eq “Windows Server 2016” -or $osVersion -eq “Windows Server 2019”) {
    Write-Host “$server is running a supported operating system.”
} else {
    Write-Host “$server is running an unsupported operating system.”
}
Checking if our variable is equal to either Windows Server 2016 or Windows Server 2019 (Image credit: Petri/Bill Kindle)

Voorbeeld 9: Vergelijking met IfElse-statements

De EN en OF operators bieden een beknopte manier om meerdere voorwaarden tegelijk te evalueren. Ze verschillen van IfElse statements doordat de laatste slechts één voorwaarde tegelijk evalueert. Als de voorwaarde in een IfElse statement waar is, wordt het codeblok uitgevoerd dat is gekoppeld aan het If statement. Anders wordt het codeblok uitgevoerd dat is gekoppeld aan het Else statement.

Om dit te laten zien, laten we Voorbeeld 1 veranderen om een IfElse-verklaring te gebruiken in plaats daarvan. In dit veranderde voorbeeld controleert het script eerst of de gebruiker een beheerder is. Als dat waar is, controleert het vervolgens of het account actief is. Afhankelijk van de evaluatie van elke voorwaarde, voert het verschillende codeblokken uit.

$user = “John”
$isAdministrator = $true
$isAccountActive = $false

if ($isAdministrator) {
    if ($isAccountActive) {
        Write-Host “$user is an administrator with an active account.”
    } else {
        Write-Host “$user is an administrator, but their account is inactive.”
    }
} else {
    Write-Host “$user is not an administrator.”
}
Comparison with IfElse statements (Image credit: Petri/Bill Kindle)

Door deze aanpak kunt u nauwkeurige controle hebben over de stroom van het script. Het kan echter geneste codeblokken en verhoogde complexiteit veroorzaken in vergelijking met het gebruik van logische operatoren zoals “EN” en “OF”.

Hoe PowerShell here-strings te gebruiken binnen If-verklaringen

In PowerShell worden here-strings gebruikt om meerregelige string literals te maken. Ze zijn handig bij het omgaan met grote blokken tekst, of wanneer u de opmaak wilt behouden.

Here-strings, wanneer gebruikt binnen If-verklaringen, kunnen een stringwaarde vergelijken met een meerregelige string. Hier is de syntaxis voor het gebruik van here-strings binnen PowerShell If-verklaringen:

if ($string -eq @’
    Multi-line
    string
    ‘@)
{
    # Code to execute if the condition is true
}
else
{
    # Code to execute if the condition is false
}

Laat me je twee voorbeelden geven om je te helpen beter te begrijpen hoe je here-strings kunt gebruiken in If-verklaringen.

Voorbeeld 10: Controleren op een specifieke boodschap

Laten we aannemen dat we een PowerShell-script hebben dat de gebruiker om invoer vraagt, en we willen controleren of de gebruiker een specifieke boodschap heeft ingevoerd, zoals “Hallo, wereld!”. We kunnen een here-string gebruiken binnen een if-verklaring om de gebruikersinvoer te vergelijken met de verwachte boodschap.

In het volgende voorbeeld vraagt het script de gebruiker om een bericht in te voeren, en we slaan de invoer op in de variabele $userInput. De if-verklaring vergelijkt vervolgens de invoer van de gebruiker met de verwachte boodschap met behulp van een here-string. Als de invoer overeenkomt met de verwachte boodschap, wordt de boodschap “Gebruiker heeft het juiste bericht ingevoerd” weergegeven; anders wordt “Gebruiker heeft een ander bericht ingevoerd” weergegeven.

$userInput = Read-Host “Enter a message”

if ($userInput -eq @’
Hello, world!
‘@)
{
    Write-Host “User entered the correct message.”
}
else
{
    Write-Host “User entered a different message.”
}
Using here-strings to check for a specific message (Image credit: Petri/Bill Kindle)

Voorbeeld 11: Het vergelijken van een scriptblok

Hier is nog een voorbeeld waar we een scriptblok willen vergelijken met een vooraf gedefinieerd blok code. We kunnen here-strings gebruiken om het scriptblok te definiëren en vervolgens vergelijken binnen een If-verklaring.

In dit voorbeeld hebben we twee scriptblokken, $predefinedCode en $userCode. We willen controleren of de gebruikerscode overeenkomt met de vooraf gedefinieerde code. Door here-strings te gebruiken om de scriptblokken te definiëren, kunnen we ze vergelijken binnen de If-verklaring.

Als de gebruikerscode overeenkomt met de vooraf gedefinieerde code, wordt de boodschap “De gebruikerscode komt overeen met de vooraf gedefinieerde code” weergegeven; anders wordt “De gebruikerscode verschilt van de vooraf gedefinieerde code” weergegeven.

$predefinedCode = {
    Write-Host “This is some code.”
    Write-Host “It does something.”
}

$userCode = {
    Write-Host “This is some code.”
    Write-Host “It does something.”
}

if ($userCode -eq $predefinedCode)
{
    Write-Host “The user code matches the predefined code.”
}
else
{
    Write-Host “The user code differs from the predefined code.”
}
Using here-strings to compare a script block (Image credit: Petri/Bill Kindle)

Hoe concatenatie te gebruiken binnen If-verklaringen

In PowerShell kun je strings samenvoegen met de ‘+’ rekenkundige operator. Om samenvoeging te gebruiken binnen If-statements, construeer je een nieuwe string door meerdere stringvariabelen of letterlijke waarden te combineren.

Hier zijn twee voorbeelden om het gebruik van samenvoeging in PowerShell If-statements te verduidelijken:

Voorbeeld 12: Stringvariabelen samenvoegen

In dit voorbeeld worden twee stringvariabelen, $voornaam en $achternaam, gedefinieerd. De If-verklaring controleert of beide variabelen waarden hebben (d.w.z. ze zijn geen lege strings).

  • Als beide voorwaarden waar zijn, voegen we de voornaam en achternaam samen met de + operator en slaan we het resultaat op in de $volledigeNaam variabele. Vervolgens tonen we de samengevoegde volledige naam met behulp van de Write-Host cmdlet.
  • Als het eerste of het achternaam ontbreekt, zullen we zien dat de else-blok wordt uitgevoerd en een geschikte boodschap weergeeft.
$firstName = “John”
$lastName = “Doe”

if ($firstName -ne ” -and $lastName -ne ”) {
    $fullName = $firstName + “ “ + $lastName
    Write-Host “Full Name: $fullName”
} else {
    Write-Host “First name or last name is missing.”
}
Concatenating string variables (Image credit: Petri/Bill Kindle)

Voorbeeld 13: Het samenvoegen van string literals

In dit tweede voorbeeld worden drie variabelen gedefinieerd: $greeting met de waarde “Hello”, $name met de waarde “Alice” en $age met de waarde 30. De if-statement controleert of de $name variabele een waarde heeft met behulp van de IsNullorEmpty() methode.

  • Als dit waar is, creëren we een boodschap die de groet, naam en leeftijd samenvoegt met behulp van de + operator. We slaan de resulterende boodschap op in de $message variabele en weergeven deze vervolgens met behulp van de Write-Host cmdlet.
  • Als de naam ontbreekt (lege string), wordt het else-blok uitgevoerd en wordt een geschikte foutboodschap weergegeven.
$greeting = “Hello”
$name = “Alice”
$age = 30

if ([string]::IsNullorEmpty($name) -eq $false){
    $message = $greeting + “, “ + $name + “! Your age is “ + $age + “.”
    Write-Host $message
} else {
    Write-Host “Name is missing.”
}
Concatenating string literals (Image credit: Petri/Bill Kindle)

Over het algemeen laten deze twee voorbeelden zien hoe samenvoegingsoperaties het mogelijk maken om strings dynamisch te combineren op basis van bepaalde voorwaarden.

Hoe verbindingsstrings te gebruiken in If-statements

Verbindingstekenreeksen worden vaak gebruikt om verbindingen tot stand te brengen met databases of andere externe systemen. Deze tekenreeksen bevatten informatie over de server, de database naam, de referenties en andere parameters die nodig zijn om de verbinding tot stand te brengen.

In Als-verklaringen kunt u verbindingsreeksen gebruiken om bepaalde codeblokken uit te voeren op basis van het succes of falen van een verbinding. Hier zijn twee voorbeelden die het gebruik van verbindingsreeksen in PowerShell Als-verklaringen laten zien:

Voorbeeld 14: Controleren van een databaseverbinding

In dit voorbeeld definiëren we een verbindingsreeks ($connectionString) die de servernaam, databasenaam en referenties specificeert. Vervolgens maken we een SqlConnection-object met behulp van de verbindingsreeks. Binnen het try-blok proberen we de verbinding te openen met $connection.Open().

  • Als de verbinding succesvol is, wordt het codeblok uitgevoerd onder het try-blok, wat een succesvolle verbinding laat zien.
  • Als er een uitzondering optreedt (d.w.z. de verbinding mislukt), wordt het codeblok uitgevoerd onder het catch-blok, wat een mislukte verbinding laat zien.
# Define the connection string
$connectionString = “Server=server_name;Database=db_name;User Id=user_id;Password=password;"

# Create a SqlConnection object using the connection string
$connection = New-Object System.Data.SqlClient.SqlConnection($connectionString)

# Attempt to establish the connection
try {
    $connection.Open()
   
    # Connection successful
    Write-Host “Connected to the database.”

    # Perform additional operations on the database if needed

    # Close the connection
    $connection.Close()
}
catch {
    # Connection failed
    Write-Host “Failed to connect to the database.”
}
Checking a database connection (Image credit: Petri/Bill Kindle)

Voorbeeld 15: Controleren van een netwerkverbinding

In dit tweede voorbeeld definiëren we een verbindingsreeks ($connectionString) die de naam van de server en het poortnummer specificeert. Vervolgens maken we een TcpClient-object met behulp van de verbindingsreeks. Binnen het try-blok proberen we een verbinding met de server tot stand te brengen met $tcpClient.Connect(”server_name”, 1234).

  • Als de verbinding succesvol is, wordt het codeblok uitgevoerd onder het try-blok, wat een succesvolle verbinding laat zien.
  • Als er een uitzondering optreedt (dwz, de verbinding mislukt), wordt de codeblok uitgevoerd onder het catch-blok, waarbij een mislukte verbinding wordt weergegeven.
# Define the connection string
$connectionString = “Server=server_name;Port=1234;"

# Create a TcpClient object using the connection string
$tcpClient = New-Object System.Net.Sockets.TcpClient

# Attempt to establish the connection
try {
    $tcpClient.Connect(”server_name”, 1234)
   
    # Connection successful
    Write-Host “Connected to the server.”

    # Perform additional operations if needed

    # Close the connection
    $tcpClient.Close()
}
catch {
    # Connection failed
    Write-Host “Failed to connect to the server.”
}
Checking a network connection (Image credit: Petri/Bill Kindle)

Deze bovenstaande voorbeelden zijn vereenvoudigd en gaan ervan uit dat er een succesvolle verbinding is als er geen uitzonderingen worden gegenereerd. In realistische scenario’s is het belangrijk om uitzonderingen op de juiste manier af te handelen. U moet aanvullende foutafhandeling en verificatiemechanismen gebruiken op basis van de specifieke vereisten van uw verbinding.

Hoe u Break- en Continue-statements binnen een If-statement gebruikt

In PowerShell worden de Break– en Continue-statements gebruikt om de uitvoeringsvolgorde binnen lussen en schakelaars te regelen. Terwijl Break u toestaat om een lus of schakelaar te verlaten, stelt Continue u in staat om de huidige iteratie over te slaan en naar de volgende iteratie te gaan.

Hoewel deze statements doorgaans binnen lussen worden gebruikt, kunt u ze ook binnen een If-statement gebruiken om specifiek gedrag te bereiken. Laten we verkennen hoe u een Break en Continue binnen If-statements gebruikt met twee eenvoudig te volgen voorbeelden.

Voorbeeld 16: Gebruik van Break in een If-statement

In dit voorbeeld hebben we een reeks getallen van 1 tot 10. We gebruiken een Foreach-lus om elk getal te doorlopen. Binnen de lus controleren we of het huidige getal gelijk is aan 6.

  • Als dat zo is, tonen we een bericht en gebruiken we de break-instructie om de lus te verlaten.
  • Als het getal niet gelijk is aan 6, tonen we eenvoudigweg het huidige getal.
  • Wanneer de lus het getal 6 tegenkomt, breekt deze uit de lus en gaat het programma verder met de daaropvolgende code.
$numbers = 1..10

foreach ($number in $numbers) {
    if ($number -eq 6) {
        Write-Host “Found the number 6. Exiting the loop.”
        break
    }
   
    Write-Host “Current number is: $number”
}
Using Break in an If statement (Image credit: Petri/Bill Kindle)

Voorbeeld 17: Gebruik van Continue in een If-statement

In dit voorbeeld hebben we opnieuw een reeks getallen van 1 tot 10. We gebruiken een Foreach-lus om elk getal te doorlopen. Eerst controleren we of het huidige getal 3 of 7 is.

  • Als dit waar is, tonen we een bericht en gebruiken we de Continue-instructie om de huidige iteratie over te slaan en naar de volgende te gaan.
  • Als het getal niet 3 of 7 is, tonen we het huidige getal. De lus zal doorgaan totdat we alle getallen hebben geëvalueerd.
$numbers = 1..10

foreach ($number in $numbers) {
    if ($number -eq 3 -or $number -eq 7) {
        Write-Host “Skipping the number $number”
        continue
    }
   
    Write-Host “Current number is: $number”
}
Using Continue in an If statement (Image credit: Petri/Bill Kindle)

In beide voorbeelden gebruikten we If-instructies om bepaalde acties voorwaardelijk uit te voeren op basis van specifieke voorwaarden. De Break-instructie stond ons toe om de lus te verlaten of volledig te onderbreken, terwijl de Continue-instructie de resterende code binnen de huidige iteratie oversloeg en naar de volgende iteratie ging.

Hoe hashtables te gebruiken binnen If-statements

In PowerShell kunt u hashtables gebruiken binnen If-statements om conditionele controles uit te voeren op basis van sleutel-waardeparen. Hashtables zijn een verzameling sleutel-waardeparen waarbij elke sleutel uniek is.

Hier zijn twee voorbeelden die laten zien hoe u hashtables kunt gebruiken in PowerShell If-statements.

Voorbeeld 18: Controleren of een specifieke sleutel bestaat in een hashtable

In dit voorbeeld hebben we een hashtable met de naam $myHashtable met drie sleutel-waardeparen. De If-verklaring controleert of de sleutel “Leeftijd” bestaat in de hashtable met behulp van de ContainsKey()-methode. Als de sleutel bestaat, wordt een bericht afgedrukt waarin staat dat de leeftijd aanwezig is; anders wordt een bericht afgedrukt waarin staat dat de leeftijd niet aanwezig is.

# Create a hashtable
$myHashtable = @{
    “Name” = “John”
    “Age” = 30
    “City” = “New York”
}

# Check if a specific key exists in the hashtable
if ($myHashtable.ContainsKey(”Age”)) {
    Write-Host “Age is present in the hashtable.”
}
else {
    Write-Host “Age is not present in the hashtable.”
}
Checking if a specific key exists in a hashtable (Image credit: Petri/Bill Kindle)

Voorbeeld 19: Controleren of een specifieke waarde bestaat in een hashtable

In dit voorbeeld hebben we opnieuw dezelfde hashtable met de naam $myHashtable. De If-verklaring controleert of de waarde “New York” bestaat in de hashtable met behulp van de ContainsValue()-methode. Als de waarde bestaat, wordt een bericht afgedrukt waarin staat dat de stad New York is; anders wordt een bericht afgedrukt waarin staat dat de stad niet New York is.

# Create a hashtable
$myHashtable = @{
    “Name” = “John”
    “Age” = 30
    “City” = “New York”
}

# Check if a specific value exists in the hashtable
if ($myHashtable.ContainsValue(”New York”)) {
    Write-Host “The city is New York.”
}
else {
    Write-Host “The city is not New York.”
}
Checking if a specific value exists in a hashtable (Image credit: Petri/Bill Kindle)

Hoe arrays te gebruiken in If-statements

In PowerShell kunnen we arrays gebruiken in If-verklaringen om bepaalde voorwaarden te controleren en specifieke acties uit te voeren op basis van die voorwaarden. Hier zijn twee voorbeelden die het gebruik van arrays in If-verklaringen laten zien.

Voorbeeld 20: Controleren of een array een specifieke waarde bevat

In dit voorbeeld hebben we een array genaamd $numbers die een reeks getallen bevat. De If-verklaring controleert of de array de waarde ‘3’ bevat met behulp van de -bevat operator. Als de voorwaarde waar is, zal het de tekst “De array bevat de waarde 3.” uitvoeren. Anders zal het de tekst “De array bevat de waarde 3 niet.” uitvoeren.

# Define an array of numbers
$numbers = 1, 2, 3, 4, 5

# Check if the array contains a specific value, e.g., 3
if ($numbers -contains 3) {
    Write-Host “The array contains the value 3.”
} else {
    Write-Host “The array does not contain the value 3.”
}
Checking if an array contains a specific value (Image credit: Petri/Bill Kindle)

Voorbeeld 21: Controleren of een array leeg is

In dit voorbeeld hebben we een lege array genaamd $emptyArray. De If-verklaring controleert of de lengte-eigenschap van de array gelijk is aan 0. Als de voorwaarde waar is, zal het de tekst “De array is leeg.” uitvoeren. Anders zal het de tekst “De array is niet leeg.” uitvoeren.

# Define an empty array
$emptyArray = @()

# Check if the array is empty
if ($emptyArray.Length -eq 0) {
    Write-Host “The array is empty.”
} else {
    Write-Host “The array is not empty.”
}
Checking if an array is empty (Image credit: Petri/Bill Kindle)

Hoe Switch-verklaringen te gebruiken in PowerShell

In PowerShell biedt de Switch-verklaring een manier om conditionele branching uit te voeren op basis van de waarde van een variabele of een expressie. Het stelt je in staat om een enkele waarde te vergelijken met meerdere waarden en verschillende codeblokken uit te voeren afhankelijk van de overeenkomst.

Hier volgt een uitleg over hoe je Switch-verklaringen in PowerShell kunt gebruiken met twee makkelijk te volgen voorbeelden.

Voorbeeld 22: Controleren op dagen van de week

In dit voorbeeld hebben we een $day variabele die gelijk zal zijn aan welke dag het op dat moment is. De Switch-verklaring controleert de waarde van $day tegen verschillende gevallen met behulp van de strings “Maandag,” “Dinsdag,” enzovoort.

  • Als er een overeenkomst is, voert het script het overeenkomstige codeblok uit.
  • Als er geen overeenkomst is, voert het script het Standaard blok uit. Hier zal de uitvoer zijn “Het is het begin van de week!”
$day = (Get-Date).DayOfWeek

switch ($day) {
    “Monday” {
        Write-Host “It’s the start of the week!”
    }
    “Tuesday” {
        Write-Host “It’s Tuesday!”
    }
    “Wednesday” {
        Write-Host “It’s the middle of the week!”
    }
    “Thursday” {
        Write-Host “It’s almost Friday!”
    }
    “Friday” {
        Write-Host “It’s finally Friday!”
    }
    Default {
        Write-Host “It’s the weekend!”
    }
}
Using a Switch statement to check for days of the week (Image credit: Petri/Bill Kindle)

Voorbeeld 23: Categoriseren van getallen

In dit tweede voorbeeld hebben we een $number variabele met de waarde 42. De Switch-verklaring controleert de waarde van $number tegen verschillende gevallen met behulp van scriptblokken. Het eerste geval controleert of het getal kleiner is dan 0, het tweede geval controleert of het groter is dan 0, en het Standaard blok wordt uitgevoerd als geen van de andere gevallen overeenkomt. Hier zal de uitvoer zijn “Positief getal.”

$number = 42

switch ($number) {
    { $_ -lt 0 } {
        Write-Host “Negative number”
    }
    { $_ -gt 0 } {
        Write-Host “Positive number”
    }
    Default {
        Write-Host “Zero”
    }
}
Using a Switch statement to categorize numbers (Image credit: Petri/Bill Kindle)

In beide voorbeelden kun je de codeblokken binnen elke case aanpassen om elke gewenste actie uit te voeren op basis van de overeenkomende voorwaarde. De Switch-verklaring is een krachtige constructie in PowerShell die een elegante manier biedt om meerdere voorwaarden te behandelen om codeblokken uit te voeren.

PowerShell en voorwaardelijke logica: Een samenvatting

Over het algemeen bieden If-verklaringen en hun gerelateerde constructies krachtige tools voor het implementeren van voorwaardelijke logica in PowerShell-scripts. If-verklaringen zijn essentieel voor het uitvoeren van voorwaardelijke code, omdat ze je in staat stellen om een voorwaarde te testen en verschillende codeblokken uit te voeren op basis van de evaluatie van de voorwaarde als waar of onwaar.

De voorbeelden die ik in dit artikel heb gegeven, tonen hoe If-verklaringen in PowerShell kunnen worden gebruikt om te controleren of een getal positief of negatief is, of dat een bestand bestaat. Ik heb echter veel andere trucs voor voorwaardelijke logica in dit artikel beschreven om je te helpen een betere PowerShell-scriptschrijver te worden. De informatie hier was vrij dicht, dus hier is wat je moet onthouden.

  • Else-verklaringen worden gebruikt in combinatie met If-verklaringen om voorwaardelijke logica te creëren, waarbij een fallback-optie wordt geboden wanneer de voorwaarde niet wordt voldaan.
  • ElseIf-verklaringen kunnen ook worden gebruikt om voorwaarden te creëren die alleen worden gecontroleerd als voorafgaande If– of ElseIf-verklaringen worden geëvalueerd als onwaar, wat zorgt voor meer complexe voorwaardelijke logica.
  • Logische operatoren zoals AND en OR kunnen worden gebruikt om meerdere voorwaarden te combineren in Als statements om de stroom van de script te beheersen. Here-strings kunnen ook worden gebruikt binnen Als statements om stringwaarden te vergelijken met multi-line strings.
  • De concatenatie van strings met behulp van de ‘+’ operator stelt je ook in staat om strings dynamisch te combineren op basis van specifieke voorwaarden binnen Als statements.
  • Connection strings worden vaak gebruikt in Als statements om codeblokken conditioneel uit te voeren op basis van het slagen of falen van een verbinding met databases of externe systemen.
  • De Break en Continue statements bieden controle over loop- en switchuitvoering, en je kunt ze gebruiken binnen Als statements om een specifiek gedrag te bereiken.
  • Hashtables en arrays kunnen ook worden gebruikt in Als statements om specifieke voorwaarden te controleren en acties uit te voeren op basis van die voorwaarden.
  • Tot slot stelt het Switch statement voorwaardelijke vertakking in op basis van de waarde van een variabele of expressie, waardoor het uitvoeren van verschillende codeblokken afhankelijk is van de match.

Bedankt voor het lezen van deze gedetailleerde handleiding over PowerShell Als statements, vraag gerust vragen in het commentaaronderdeel hieronder!

Source:
https://petri.com/powershell-if-statement/