Wie man PowerShell If-Anweisungen verwendet, um bedingte Logik zu Skripten hinzuzufügen

PowerShell ist eine leistungsfähige Skriptsprache aus vielen Gründen. Einer dieser Gründe ist die Unterstützung für bedingte Logik, die Ihnen helfen kann, Ihre PowerShell-Skripte zu optimieren und effektiver zu gestalten. In diesem Artikel werde ich Ihnen beibringen, wie Sie die bedingte Logik If, Else und Elseif verwenden und erläutern, wie Ihnen dies als PowerShell-Skriptautor helfen kann.

Verwendung des PowerShell If-Statements

PowerShell If -Anweisungen werden verwendet, um die bedingte Ausführung von Code durchzuführen. Sie ermöglichen es Ihnen, eine Bedingung zu testen und verschiedene Codeblöcke auszuführen, basierend darauf, ob die Bedingung wahr oder falsch ausgewertet wird.

Beginnen wir mit zwei Beispielen, die zeigen, wie man PowerShell-If-Anweisungen verwendet.

Beispiel 1: Überprüfen, ob eine Zahl positiv oder negativ ist

In folgendem Beispiel haben wir eine Variable, $number, die auf 10 gesetzt ist. Die If-Anweisung überprüft, ob der Wert von $number größer als 0 ist, unter Verwendung des -gt Operators.

  • Wenn die Bedingung wahr ist, wird der Codeblock innerhalb der ersten geschweiften Klammern ausgeführt, der in diesem Fall „Die Zahl ist positiv“ ausgibt.
  • Wenn die Bedingung falsch ist, wechselt es zum Elseif-Block und überprüft, ob die Zahl mit dem -lt Operator kleiner als 0 ist.
  • Wenn die Bedingung wahr ist, führt es den Code innerhalb des zweiten Satzes geschweifter Klammern aus und gibt „Die Zahl ist negativ“ aus.
  • Wenn beide Bedingungen falsch sind, führt es den Code innerhalb des Else-Blocks aus und gibt „Die Zahl ist null“ aus.
$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)

Beispiel 2: Überprüfen, ob eine Datei existiert

In diesem nächsten Beispiel haben wir eine Variable, $file, die auf den Pfad einer Datei gesetzt ist. Die If-Anweisung verwendet das Test-Path-Cmdlet, um zu überprüfen, ob die Datei existiert.

  • Wenn die Bedingung wahr ist, was bedeutet, dass die Datei existiert, führt es den Code innerhalb des ersten Satzes geschweifter Klammern aus und gibt „Die Datei existiert“ aus.
  • Wenn die Bedingung falsch ist, führt es den Code innerhalb des Else-Blocks aus und gibt „Die Datei existiert nicht“ aus.
$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)

Dies waren nur zwei grundlegende Beispiele dafür, wie bedingte Anweisungen in PowerShell funktionieren. Lassen Sie uns zur Else-Anweisung übergehen.

Wie man die PowerShell Else-Anweisung mit der If-Anweisung verwendet

In PowerShell können Sie die Else-Anweisung mit der If-Anweisung verwenden, um bedingte Logik zu erstellen. Sie ermöglicht es Ihnen, einen Codeblock anzugeben, der ausgeführt werden soll, wenn die Bedingung in der If-Anweisung falsch ist.

Lassen Sie mich Ihnen zwei Beispiele zeigen, wie Sie Else-Anweisungen in PowerShell verwenden können.

Beispiel 3: Überprüfen, ob eine Variable größer als eine Zahl ist

In diesem Beispiel führen wir mehrere Überprüfungen durch:

  • Die If-Anweisung überprüft, ob die Variable $number größer als 10 ist.
  • Wenn dies der Fall ist, wird die Meldung „Die Zahl ist größer als 10“ angezeigt.
  • Wenn die Bedingung nicht erfüllt ist, wird der Else-Block ausgeführt und die Meldung „Die Zahl ist nicht größer als 10“ wird angezeigt.
$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)

Beispiel 4: Vergleich des Werts einer Variable mit einem String

In diesem Beispiel vergleicht die If-Anweisung den Wert der Variablen $user mit dem String „John“.

  • Wenn sie gleich sind, wird die Meldung „Willkommen, John!“ angezeigt.
  • Wenn die Bedingung nicht erfüllt ist, d.h. der Wert von $user ist nicht „John“, wird der Else-Block ausgeführt und die Meldung „Zugriff verweigert. Du bist nicht John.“ wird angezeigt.
$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)

Der Unterschied zwischen einer If– und einer Else-Anweisung liegt in den Bedingungen, die sie auswerten, und den anschließenden Aktionen, die sie ausführen.

  • Eine If-Anweisung überprüft eine Bedingung und führt den Code aus, wenn die Bedingung wahr ist.
  • Eine Else-Anweisung bietet einen alternativen Codeblock, der ausgeführt wird, wenn die Bedingung in der If-Anweisung falsch ist. Wenn die Bedingung in der If-Anweisung wahr ist, wird der Else-Block nicht ausgeführt.

Zusammenfassend ermöglicht es die If-Anweisung, Code basierend auf einer spezifischen Bedingung auszuführen. Die Else-Anweisung bietet eine Alternative, wenn die Bedingung falsch ist. Durch die Verwendung dieser Anweisungen zusammen können Sie in Ihren PowerShell-Skripten eine flexiblere und robustere Logik erstellen.

Verwendung von PowerShell ElseIf-Anweisungen

ElseIf-Anweisungen werden verwendet, um eine Bedingung zu erstellen, die überprüft, ob die vorherige If-Anweisung oder alle vorherigen ElseIf-Anweisungen ‚falsch‘ auswerten. ElseIf-Anweisungen ermöglichen es Ihnen, mehrere Bedingungen zu testen und verschiedene Codeblöcke basierend auf der Auswertung dieser Bedingungen auszuführen. Die ElseIf-Anweisung ist besonders nützlich, wenn es mehr als zwei Ergebnisse gibt.

Hier sind zwei Beispiele, die die Verwendung von ElseIf-Anweisungen in PowerShell zeigen.

Beispiel 5: Überprüfen des Wertebereichs einer Zahl

In diesem Beispiel überprüft der Code den Wert der Variablen $number und führt verschiedene Codeblöcke basierend auf ihrem Bereich aus.

  • Wenn die Zahl kleiner als 10 ist, ist die erste Bedingung wahr und die entsprechende Nachricht wird angezeigt.
  • Wenn nicht, wird die nächste Bedingung mithilfe der ElseIf-Anweisung überprüft. Wenn die Zahl zwischen 10 und 19 (einschließlich) liegt, ist die zweite Bedingung wahr und die entsprechende Nachricht wird angezeigt.
  • Wenn keine der vorherigen Bedingungen wahr ist, wird der Else-Block ausgeführt und zeigt eine Nachricht an, die besagt, dass die Zahl 20 oder größer ist.
$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)

Beispiel 6: Überprüfen der Länge eines Strings

In diesem Beispiel wird die Länge des $name-Strings untersucht und anhand seiner Länge seine Kategorie bestimmt.

  • Wenn der Name mehr als 10 Zeichen hat, ist die erste Bedingung wahr und die entsprechende Nachricht wird angezeigt.
  • Wenn die erste Bedingung falsch ist, wird die nächste Bedingung mithilfe der ElseIf-Anweisung überprüft. Wenn der Name mehr als 5 Zeichen hat (aber nicht mehr als 10), ist die zweite Bedingung wahr und die entsprechende Nachricht wird angezeigt.
  • Wenn keine der vorherigen Bedingungen wahr ist, wird der Else-Block ausgeführt und zeigt eine Nachricht an, die besagt, dass der Name 5 Zeichen oder kürzer ist.
$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)

Insgesamt legen die ElseIf-Anweisungen in PowerShell Bedingungen fest, die überprüft werden, wenn vorherige Aussagen falsch ausgewertet werden. Sie bieten eine Möglichkeit, mehrere Bedingungen zu behandeln und entsprechend verschiedene Codeblöcke auszuführen.

So verwenden Sie PowerShell-UND/ODER-Anweisungen mit If-Anweisungen

In PowerShell werden „UND“ und „ODER“ als logische Operatoren verwendet, um mehrere Bedingungen in bedingten Anweisungen zu kombinieren und den Ablauf Ihres Skripts zu steuern. Sie können mit If-Anweisungen verwendet werden, um mehrere Bedingungen gleichzeitig zu evaluieren:

Lassen Sie mich Ihnen zwei Beispiele geben, um ihre Verwendung zu zeigen und die Unterschiede zu IfElse-Anweisungen hervorzuheben.

Beispiel 7: Verwendung des UND-Operators

Stellen Sie sich vor, Sie möchten mit PowerShell überprüfen, ob ein Benutzer ein Administrator ist und ob sein Konto derzeit aktiv ist. Sie können den UND-Operator verwenden, um beide Bedingungen gleichzeitig zu evaluieren.

In diesem Beispiel überprüft das Skript, ob sowohl die Variablen $isAdministrator als auch $isAccountActive wahr sind. Wenn beide Bedingungen wahr sind, gibt das Skript eine Meldung aus, die zeigt, dass der Benutzer ein Administrator mit einem aktiven Konto ist. Andernfalls wird eine Meldung ausgegeben, die zeigt, dass entweder der Benutzer kein Administrator ist oder sein Konto inaktiv ist.

$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)

Beispiel 8: Verwendung des „ODER“-Operators

Lassen Sie uns sagen, Sie möchten überprüfen, ob ein Server Windows Server 2016 oder Windows Server 2019 ausführt. Mit PowerShell können Sie den OR-Operator verwenden, um diese Bedingungen zu evaluieren.

In diesem Beispiel verwendet das Skript den OR-Operator, um zu überprüfen, ob die Variable $osVersion entweder „Windows Server 2016“ oder „Windows Server 2019“ entspricht. Wenn die Bedingung als wahr ausgewertet wird, wird eine Meldung angezeigt, die zeigt, dass der Server ein unterstütztes Betriebssystem ausführt. Andernfalls wird eine Meldung angezeigt, die zeigt, dass der Server ein nicht unterstütztes Betriebssystem ausführt.

$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)

Beispiel 9: Vergleich mit IfElse-Anweisungen

Die AND– und OR-Operatoren bieten eine prägnante Möglichkeit, mehrere Bedingungen gleichzeitig zu evaluieren. Sie unterscheiden sich von IfElse-Anweisungen, da letztere immer nur eine einzelne Bedingung evaluieren. Wenn die Bedingung in einer IfElse-Anweisung wahr ist, wird der mit der If-Anweisung verbundene Codeblock ausgeführt. Andernfalls wird der mit der Else-Anweisung verbundene Codeblock ausgeführt.

Um dies zu zeigen, ändern wir Beispiel 1, um eine IfElse-Anweisung zu verwenden. In diesem geänderten Beispiel überprüft das Skript zuerst, ob der Benutzer ein Administrator ist. Wenn dies zutrifft, überprüft es dann, ob das Konto aktiv ist. Abhängig von der Auswertung jeder Bedingung führt es unterschiedliche Codeblöcke aus.

$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)

Durch diesen Ansatz wird eine feine Steuerung über den Ablauf des Skripts ermöglicht. Es kann jedoch zu verschachtelten Codeblöcken und erhöhter Komplexität im Vergleich zur Verwendung logischer Operatoren wie „UND“ und „ODER“ führen.

Wie man PowerShell-Here-Strings innerhalb von If-Anweisungen verwendet

In PowerShell werden Here-Strings verwendet, um mehrzeilige Zeichenfolgenliterale zu erstellen. Sie sind nützlich, wenn es um große Textblöcke geht oder wenn die Formatierung erhalten bleiben muss.

Here-Strings, wenn sie innerhalb von If-Anweisungen verwendet werden, können einen Zeichenfolgenwert mit einer mehrzeiligen Zeichenfolge vergleichen. Hier ist die Syntax für die Verwendung von Here-Strings innerhalb von PowerShell If-Anweisungen:

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

Lassen Sie mich Ihnen zwei Beispiele geben, um Ihnen zu helfen, besser zu verstehen, wie man Here-Strings in If-Anweisungen verwendet.

Beispiel 10: Überprüfen einer spezifischen Nachricht

Angenommen, wir haben ein PowerShell-Skript, das den Benutzer um Eingabe bittet, und wir möchten überprüfen, ob der Benutzer eine bestimmte Nachricht eingegeben hat, wie z.B. „Hallo, Welt!“. Wir können ein Here-String innerhalb einer If-Anweisung verwenden, um die Benutzereingabe mit der erwarteten Nachricht zu vergleichen.

In folgendem Beispiel fordert das Skript den Benutzer auf, eine Nachricht einzugeben, und wir speichern die Eingabe in der Variablen $userInput. Die If-Anweisung vergleicht dann die Eingabe des Benutzers mit der erwarteten Nachricht mithilfe eines Here-Strings. Wenn die Eingabe mit der erwarteten Nachricht übereinstimmt, wird die Meldung „Benutzer hat die richtige Nachricht eingegeben“ angezeigt; andernfalls wird „Benutzer hat eine andere Nachricht eingegeben“ angezeigt.

$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)

Beispiel 11: Vergleich eines Skriptblocks

Hier ist ein weiteres Beispiel, in dem wir einen Skriptblock mit einem vordefinierten Codeblock vergleichen möchten. Wir können Here-Strings verwenden, um den Skriptblock zu definieren und ihn dann innerhalb einer If-Anweisung zu vergleichen.

In diesem Beispiel haben wir zwei Skriptblöcke, $predefinedCode und $userCode. Wir möchten überprüfen, ob der Benutzercode mit dem vordefinierten Code übereinstimmt. Indem wir Here-Strings verwenden, um die Skriptblöcke zu definieren, können wir sie innerhalb der If-Anweisung vergleichen.

Wenn der Benutzercode mit dem vordefinierten Code übereinstimmt, wird die Meldung „Der Benutzercode stimmt mit dem vordefinierten Code überein“ angezeigt; andernfalls wird „Der Benutzercode unterscheidet sich vom vordefinierten Code“ angezeigt.

$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)

Wie man die Verkettung innerhalb von If-Anweisungen verwendet

In PowerShell können Sie Zeichenfolgen verketten mithilfe des ‘+’ arithmetischen Operators. Um Verkettung innerhalb von If-Anweisungen zu verwenden, erstellen Sie eine neue Zeichenfolge, indem Sie mehrere Zeichenfolgenvariablen oder -literale kombinieren.

Hier sind zwei Beispiele, um die Verwendung von Verkettung in PowerShell If-Anweisungen zu veranschaulichen:

Beispiel 12: Verketten von Zeichenfolgenvariablen

In diesem Beispiel werden zwei Zeichenfolgenvariablen, $firstName und $lastName, definiert. Die If-Anweisung überprüft, ob beide Variablen Werte haben (d. h., sie sind keine leeren Zeichenfolgen).

  • Wenn beide Bedingungen zutreffen, verketten wir den Vornamen und den Nachnamen mithilfe des + Operators und speichern das Ergebnis in der $fullName-Variablen. Anschließend zeigen wir den verketteten vollständigen Namen mithilfe des Write-Host-Cmdlets an.
  • Wenn der Vorname oder der Nachname fehlt, sehen wir, dass der else-Block ausgeführt wird und eine entsprechende Meldung angezeigt wird.
$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)

Beispiel 13: Verkettung von Zeichenkettenliterale

In diesem zweiten Beispiel werden drei Variablen definiert: $greeting mit dem Wert „Hallo“, $name mit dem Wert „Alice“ und $age mit dem Wert 30. Die if-Anweisung überprüft, ob die Variable $name einen Wert hat, indem die IsNullorEmpty()-Methode verwendet wird.

  • Wenn dies zutrifft, erstellen wir eine Meldung, die die Begrüßung, den Namen und das Alter mithilfe des + Operators verknüpft. Wir speichern die resultierende Meldung in der Variablen $message und zeigen sie dann mithilfe des Write-Host-Befehls an.
  • Wenn der Name fehlt (Leerzeichen), wird der else-Block ausgeführt und eine entsprechende Fehlermeldung angezeigt.
$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)

Insgesamt zeigen diese beiden Beispiele, wie Verkettungsvorgänge es Ihnen ermöglichen, Zeichenketten dynamisch basierend auf bestimmten Bedingungen zu kombinieren.

Wie man Verbindungszeichenfolgen in If-Anweisungen verwendet

Verbindungszeichenfolgen werden häufig verwendet, um Verbindungen zu Datenbanken oder anderen externen Systemen herzustellen. Diese Zeichenfolgen enthalten Informationen über den Server, den Datenbanknamen, Anmeldeinformationen und andere Parameter, die erforderlich sind, um die Verbindung herzustellen.

In If Anweisungen können Verbindungszeichenfolgen verwendet werden, um bestimmte Codeblöcke basierend auf dem Erfolg oder dem Scheitern einer Verbindung auszuführen. Hier sind zwei Beispiele, die die Verwendung von Verbindungszeichenfolgen in PowerShell If Anweisungen zeigen:

Beispiel 14: Überprüfung einer Datenbankverbindung

In diesem Beispiel definieren wir eine Verbindungszeichenfolge ($connectionString), die den Servernamen, den Datenbanknamen und die Anmeldeinformationen angibt. Wir erstellen dann ein SqlConnection-Objekt unter Verwendung der Verbindungszeichenfolge. Innerhalb des try-Blocks versuchen wir, die Verbindung unter Verwendung von $connection.Open() zu öffnen.

  • Wenn die Verbindung erfolgreich ist, wird der Codeblock im try-Block ausgeführt und zeigt eine erfolgreiche Verbindung an.
  • Wenn eine Ausnahme auftritt (d. h. die Verbindung fehlschlägt), wird der Codeblock im catch-Block ausgeführt und zeigt eine fehlgeschlagene Verbindung an.
# 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)

Beispiel 15: Überprüfung einer Netzwerkverbindung

In diesem zweiten Beispiel definieren wir eine Verbindungszeichenfolge ($connectionString), die den Servernamen und die Portnummer angibt. Wir erstellen dann ein TcpClient-Objekt unter Verwendung der Verbindungszeichenfolge. Innerhalb des try-Blocks versuchen wir, eine Verbindung zum Server unter Verwendung von $tcpClient.Connect(”server_name”, 1234) herzustellen.

  • Wenn die Verbindung erfolgreich ist, wird der Codeblock im try-Block ausgeführt und zeigt eine erfolgreiche Verbindung an.
  • Wenn eine Ausnahme auftritt (d. h. die Verbindung fehlschlägt), wird der Codeblock unter dem Catch-Block ausgeführt, der eine fehlgeschlagene Verbindung anzeigt.
# 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)

Diese obigen Beispiele sind vereinfacht und gehen davon aus, dass bei Nichtauftreten von Ausnahmen eine erfolgreiche Verbindung besteht. In realen Szenarien ist es wichtig, Ausnahmen angemessen zu behandeln. Sie sollten zusätzliche Fehlerbehandlung und Authentifizierungsmechanismen basierend auf den spezifischen Anforderungen Ihrer Verbindung verwenden.

Wie man Break- und Continue-Anweisungen innerhalb einer If-Anweisung verwendet

In PowerShell werden die Break– und Continue-Anweisungen verwendet, um den Ablauf innerhalb von Schleifen und Switches zu steuern. Während Break es Ihnen ermöglicht, eine Schleife oder einen Switch zu verlassen, lässt Sie Continue die aktuelle Iteration überspringen und zur nächsten Iteration übergehen.

Obwohl diese Anweisungen in der Regel innerhalb von Schleifen verwendet werden, können Sie sie auch innerhalb einer If-Anweisung verwenden, um ein spezifisches Verhalten zu erreichen. Lassen Sie uns erkunden, wie man Break und Continue innerhalb von If-Anweisungen anhand von zwei einfachen Beispielen verwendet.

Beispiel 16: Verwendung von Break in einer If-Anweisung

In diesem Beispiel haben wir ein Array von Zahlen von 1 bis 10. Wir verwenden eine Foreach-Schleife, um jede Zahl zu durchlaufen. Innerhalb der Schleife überprüfen wir, ob die aktuelle Zahl gleich 6 ist.

  • Wenn ja, zeigen wir eine Nachricht an und verwenden dann die Break-Anweisung, um die Schleife zu verlassen.
  • Wenn die Zahl nicht gleich 6 ist, zeigen wir einfach die aktuelle Zahl an.
  • Wenn die Schleife die Zahl 6 erreicht, bricht sie aus der Schleife aus, und das Programm fährt mit dem nachfolgenden Code fort.
$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)

Beispiel 17: Verwendung von Continue in einer If-Anweisung

In diesem Beispiel haben wir wieder ein Array von Zahlen von 1 bis 10. Wir verwenden eine Foreach-Schleife, um jede Zahl zu durchlaufen. Zuerst überprüfen wir, ob die aktuelle Zahl 3 oder 7 ist.

  • Wenn ja; zeigen wir eine Nachricht an und verwenden dann die Continue-Anweisung, um die aktuelle Iteration zu überspringen und zur nächsten zu wechseln.
  • Wenn die Zahl weder 3 noch 7 ist, zeigen wir die aktuelle Zahl an. Die Schleife wird fortgesetzt, bis wir alle Zahlen ausgewertet haben.
$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 beiden Beispielen haben wir If-Anweisungen verwendet, um bestimmte Aktionen bedingt auf spezifischen Bedingungen auszuführen. Die Break-Anweisung ermöglichte es uns, die Schleife zu verlassen oder vollständig zu wechseln, während die Continue-Anweisung den verbleibenden Code innerhalb der aktuellen Iteration übersprang und zur nächsten Iteration überging.

Wie man Hashtabellen innerhalb von If-Anweisungen verwendet

In PowerShell können Sie Hashtabellen innerhalb von If-Anweisungen verwenden, um bedingte Überprüfungen basierend auf Schlüssel-Wert-Paaren durchzuführen. Hashtabellen sind eine Sammlung von Schlüssel-Wert-Paaren, wobei jeder Schlüssel eindeutig ist.

Hier sind zwei Beispiele, die zeigen, wie Hashtabellen in PowerShell If-Anweisungen verwendet werden.

Beispiel 18: Überprüfen, ob ein bestimmter Schlüssel in einer Hashtabelle vorhanden ist

In diesem Beispiel haben wir eine Hashtabelle namens $myHashtable mit drei Schlüssel-Wert-Paaren. Die If-Anweisung überprüft, ob der Schlüssel „Age“ in der Hashtabelle mit der ContainsKey()-Methode vorhanden ist. Wenn der Schlüssel vorhanden ist, wird eine Meldung ausgegeben, die besagt, dass das Alter vorhanden ist; andernfalls wird eine Meldung ausgegeben, die besagt, dass das Alter nicht vorhanden ist.

# 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)

Beispiel 19: Überprüfen, ob ein bestimmter Wert in einer Hashtabelle vorhanden ist

In diesem Beispiel haben wir erneut dieselbe Hashtabelle namens $myHashtable. Die If-Anweisung überprüft, ob der Wert „New York“ in der Hashtabelle mit der ContainsValue()-Methode vorhanden ist. Wenn der Wert vorhanden ist, wird eine Meldung ausgegeben, die besagt, dass die Stadt New York ist; andernfalls wird eine Meldung ausgegeben, die besagt, dass die Stadt nicht New York ist.

# 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)

Wie man Arrays in If-Anweisungen verwendet

In PowerShell können wir Arrays in If-Anweisungen verwenden, um bestimmte Bedingungen zu überprüfen und basierend auf diesen Bedingungen spezifische Aktionen auszuführen. Hier sind zwei Beispiele, die die Verwendung von Arrays in If-Anweisungen zeigen.

Beispiel 20: Überprüfen, ob ein Array einen bestimmten Wert enthält

In diesem Beispiel haben wir ein Array namens $numbers, das eine Sequenz von Zahlen enthält. Die If-Anweisung überprüft, ob das Array den Wert ‚3‘ mit dem -contains Operator enthält. Wenn die Bedingung zutrifft, wird „Das Array enthält den Wert 3“ ausgegeben. Andernfalls wird „Das Array enthält nicht den Wert 3“ ausgegeben.

# 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)

Beispiel 21: Überprüfen, ob ein Array leer ist

In diesem Beispiel haben wir ein leeres Array namens $emptyArray. Die If-Anweisung überprüft, ob die Längeneigenschaft des Arrays gleich 0 ist. Wenn die Bedingung zutrifft, wird „Das Array ist leer“ ausgegeben. Andernfalls wird „Das Array ist nicht leer“ ausgegeben.

# 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)

Verwendung von Switch-Anweisungen in PowerShell

In PowerShell bietet die Switch-Anweisung eine Möglichkeit, bedingte Verzweigungen basierend auf dem Wert einer Variablen oder eines Ausdrucks durchzuführen. Sie ermöglicht es, einen einzelnen Wert mit mehreren Werten zu vergleichen und abhängig von der Übereinstimmung verschiedene Codeblöcke auszuführen.

Hier eine Erklärung zur Verwendung von Switch-Anweisungen in PowerShell mit zwei einfachen Beispielen.

Beispiel 22: Überprüfung der Wochentage

In diesem Beispiel haben wir eine $day-Variable, die den aktuellen Wochentag darstellt. Die Switch-Anweisung überprüft den Wert von $day anhand verschiedener Fälle mit den Zeichenfolgen „Montag“, „Dienstag“ usw.

  • Bei Übereinstimmung führt das Skript den entsprechenden Codeblock aus.
  • Bei Nichtübereinstimmung führt das Skript den Standardblock aus. Hier lautet die Ausgabe „Es ist der Wochenanfang!“
$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)

Beispiel 23: Kategorisierung von Zahlen

In diesem zweiten Beispiel haben wir eine $number-Variable mit dem Wert 42. Die Switch-Anweisung überprüft den Wert von $number anhand verschiedener Fälle mit Skriptblöcken. Der erste Fall überprüft, ob die Zahl kleiner als 0 ist, der zweite Fall überprüft, ob sie größer als 0 ist, und der Standardblock wird ausgeführt, wenn keine anderen Fälle übereinstimmen. Hier lautet die Ausgabe „Positive Zahl.“

$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 beiden Beispielen können Sie die Codeblöcke innerhalb jedes Falles anpassen, um aufgrund der übereinstimmenden Bedingung beliebige gewünschte Aktionen auszuführen. Der Switch-Anweisung ist ein leistungsfähiges Konstrukt in PowerShell, das eine elegante Möglichkeit bietet, mehrere Bedingungen zum Ausführen von Codeblöcken zu behandeln.

PowerShell und bedingte Logik: Ein Überblick

Insgesamt bieten If-Anweisungen und ihre zugehörigen Konstrukte leistungsfähige Werkzeuge zur Implementierung bedingter Logik in PowerShell-Skripten. If-Anweisungen sind unerlässlich für die bedingte Ausführung von Code, da sie Ihnen ermöglichen, eine Bedingung zu testen und unterschiedliche Codeblöcke basierend darauf auszuführen, ob die Bedingung true oder false ergibt.

Die in diesem Artikel bereitgestellten Beispiele haben gezeigt, wie PowerShell If-Anweisungen verwendet werden können, um zu überprüfen, ob eine Zahl positiv oder negativ ist oder ob eine Datei existiert. In diesem Artikel habe ich jedoch viele andere bedingte Logik-Tricks beschrieben, um Ihnen zu helfen, ein besserer PowerShell-Skriptschreiber zu werden. Die hier enthaltene Information war ziemlich dicht, also ist hier das zu merken.

  • Else-Anweisungen werden in Verbindung mit If-Anweisungen verwendet, um bedingte Logik zu erstellen und eine Fallback-Option bereitzustellen, wenn die Bedingung nicht erfüllt ist.
  • ElseIf-Anweisungen können ebenfalls verwendet werden, um Bedingungen zu erstellen, die nur überprüft werden, wenn vorherige If– oder ElseIf-Anweisungen false ergeben, was eine komplexere bedingte Logik ermöglicht.
  • Logische Operatoren wie AND und OR können verwendet werden, um mehrere Bedingungen in If-Anweisungen zu kombinieren, um den Ablauf des Skripts zu steuern. Here-Strings können auch innerhalb von If-Anweisungen verwendet werden, um Zeichenfolgenwerte mit mehrzeiligen Zeichenfolgen zu vergleichen.
  • Die Verkettung von Zeichenfolgen mithilfe des ‚+‘ Operators ermöglicht es Ihnen auch, Zeichenfolgen basierend auf bestimmten Bedingungen innerhalb von If-Anweisungen dynamisch zu kombinieren.
  • Verbindungszeichenfolgen werden häufig in If-Anweisungen verwendet, um Codeblöcke bedingt auszuführen, abhängig davon, ob eine Verbindung zu Datenbanken oder externen Systemen erfolgreich oder fehlerhaft ist.
  • Die Break und Continue-Anweisungen bieten Kontrolle über Schleifen- und Switch-Ausführung, und Sie können sie innerhalb von If-Anweisungen verwenden, um ein bestimmtes Verhalten zu erzielen.
  • Hashtables und Arrays können auch in If-Anweisungen verwendet werden, um bestimmte Bedingungen zu überprüfen und Aktionen basierend auf diesen Bedingungen auszuführen.
  • Schließlich ermöglicht die Switch-Anweisung bedingtes Verzweigen basierend auf dem Wert einer Variablen oder eines Ausdrucks, wodurch unterschiedliche Codeblöcke abhängig von der Übereinstimmung ausgeführt werden.

Vielen Dank, dass Sie diesen detaillierten Leitfaden zu PowerShell If-Anweisungen gelesen haben. Stellen Sie gern Fragen im Kommentarbereich unten!

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