Powershell: Alles, was Sie über die IF-Anweisung

wissen wollten Wie viele andere Sprachen enthält PowerShell Anweisungen zum bedingten Ausführen von Code in Ihren Skripten. Eine dieser Aussagen ist die if-Anweisung. Heute werden wir tief in einen der grundlegendsten Befehle in PowerShell eintauchen.,

  • Index
  • Bedingte Ausführung
  • Die if-Anweisung
  • Vergleichsoperatoren
    • -eq für Gleichheit
      • -ne nicht gleich
    • – gt-ge-lt-le für größer oder kleiner als
    • -like wildcard matches
    • -match regular expression
    • -is of type
  • Sammlungsoperatoren
    • -enthält
    • – in
  • Logische Operatoren
    • – nicht
      • !,pressions
        • Überprüfung auf $null
        • Variablenzuweisung
      • Alternativer Ausführungspfad
        • else
        • Verschachtelt if
        • elseif
        • switch
      • Pipeline
        • Array inline
      • Vereinfachen Sie komplexe Operationen
        • Zeilenfortsetzung
        • li>

        • Ergebnisse vorberechnen
        • Mehrere if-Anweisungen
        • Verwenden von Funktionen
      • Fehlerbehandlung
      • Letzte Wörter

      Bedingte Ausführung

      Ihre Skripte müssen häufig Entscheidungen treffen und basierend auf diesen Entscheidungen eine andere Logik ausführen., Das meine ich mit bedingter Ausführung. Sie müssen eine Anweisung oder einen Wert auswerten und dann basierend auf dieser Auswertung verschiedene Codeabschnitte ausführen. Dies ist genau das, was die Anweisung tut.

      Die if-Anweisung

      Hier ist ein sehr grundlegendes Beispiel des if Anweisung:

       $condition = $true if ( $condition ) { Write-Output "The condition was true" }

      Das erste was if – Anweisung erfüllt ist, bewerten Sie den Ausdruck in Klammern., Wenn es $true auswertet, führt es die scriptblock in den geschweiften Klammern aus. Wenn der Wert $false, würde er diesen Scriptblock überspringen.

      Im vorherigen Beispiel hat die Anweisung nur die Variable $condition ausgewertet. Es war $true und hätte den Befehl Write-Output im scriptblock ausgeführt.

      In einigen Sprachen können Sie eine einzelne Codezeile nach der – Anweisung platzieren und diese wird ausgeführt., Das ist in PowerShell nicht der Fall. Sie müssen eine vollständige scriptblock mit geschweiften Klammern angeben, damit sie korrekt funktioniert.

      Vergleichsoperatoren

      Am häufigsten verwenden Sie die Anweisung , um zwei Elemente miteinander zu vergleichen. Powershell verfügt über spezielle Operatoren für verschiedene Vergleichsszenarien. Wenn Sie einen Vergleichsoperator verwenden, wird der Wert auf der linken Seite mit dem Wert auf der rechten Seite verglichen.,

      – eq für Gleichheit

      Die -eq führt eine Gleichheitsprüfung zwischen zwei Werten durch, um sicherzustellen, dass sie gleich sind.

       $value = Get-MysteryValue if ( 5 -eq $value ) { # do something }

      In diesem Beispiel nehme ich einen bekannten Wert von 5 und vergleiche ihn mit meiner $value, um zu sehen, ob sie übereinstimmen.

      Ein möglicher Anwendungsfall besteht darin, den Status eines Werts zu überprüfen, bevor Sie eine Aktion ausführen. Sie können einen Dienst abrufen und überprüfen, ob der Status ausgeführt wurde, bevor Sie Restart-Service darauf Restart-Service.,

      In anderen Sprachen wie C# ist es üblich, == für die Gleichheit zu verwenden (z. B. 5 == $value), aber das funktioniert nicht mit Powershell. Ein weiterer häufiger Fehler, den Benutzer machen, ist die Verwendung des Gleichheitszeichens (z. B. 5 = $value), das für die Zuweisung von Werten zu Variablen reserviert ist. Wenn Sie Ihren bekannten Wert auf der linken Seite platzieren, ist es schwieriger, diesen Fehler zu machen.

      Dieser Operator (und andere) haben ein paar Variationen.,

      • -eq groß-und Kleinschreibung Gleichheit
      • -ieq groß-und Kleinschreibung Gleichheit
      • -ceq case sensitive Gleichheit

      -ne not equal

      Viele Betreiber haben einen zugehörigen operator, der prüft, für das gegenteilige Ergebnis. überprüft, ob die Werte nicht gleich sind.

       if ( 5 -ne $value ) { # do something }

      – Verwenden Sie dies, um sicherzustellen, dass die Aktion nur ausgeführt wird, wenn der Wert nicht 5., Ein guter Anwendungsfall wäre zu überprüfen, ob sich ein Dienst im laufenden Zustand befindet, bevor Sie versuchen, ihn zu starten.

      Variationen:

      • Groß-und Kleinschreibung nicht gleich
      • -ine Groß-und Kleinschreibung nicht gleich
      • -cne Groß-und Kleinschreibung nicht gleich

      Dies sind nur inverse Variationen von -eq. Ich gruppiere diese Typen zusammen, wenn ich Variationen für andere Operatoren aufliste.,

      – gt-ge-lt-le für größer oder kleiner als

      Diese Operatoren werden bei der Überprüfung verwendet, um festzustellen, ob ein Wert größer oder kleiner als ein anderer Wert ist. Die -gt -ge -lt -le steht für GreaterThan, GreaterThanOrEqual, LessThan und LessThanOrEqual.,eater als oder gleich, Groß-und Kleinschreibung

    • -cge größer oder gleich, Groß-und Kleinschreibung
    • -lt kleiner als
    • -ilt kleiner als, Groß-und Kleinschreibung
    • kleiner als, Groß-und Kleinschreibung
    • -le less than or equal
    • -ile less than or equal, case insensitive
    • -cle less than or equal, case sensitive

    I don ‚ t know why you would use case sensitive and insensitive options for these operators.,

    – ähnliche Platzhalterübereinstimmungen

    PowerShell verfügt über eine eigene platzhalterbasierte Mustervergleichssyntax, die Sie mit dem Operator -like verwenden können. Diese Platzhaltermuster sind ziemlich einfach.

    • ? stimmt mit jedem einzelnen Zeichen überein
    • * stimmt mit einer beliebigen Anzahl von Zeichen überein
     $value = 'S-ATX-SQL01' if ( $value -like 'S-*-SQL??') { # do something }

    Es ist wichtig darauf hinzuweisen, dass das Muster mit der gesamten Zeichenfolge übereinstimmt., Wenn Sie etwas in der Mitte der Zeichenfolge abgleichen müssen, müssen Sie die * an beiden Enden der Zeichenfolge platzieren.,iv>

Variationen:

  • -like Groß-und Kleinschreibung unempfindlicher Platzhalter
  • -ilike Groß-und Kleinschreibung unempfindlicher Platzhalter
  • -clike Groß-und Kleinschreibung unempfindlicher Platzhalter
  • -notlike Groß-und Kleinschreibung unempfindlicher Platzhalter nicht übereinstimmt
  • -inotlike Groß-und Kleinschreibung nicht übereinstimmt
  • -cnotlike Groß-und Kleinschreibung nicht übereinstimmt

– match regular expression

Mit dem Operator -match können Sie eine Zeichenfolge auf einer regulären ausdrucksbasierten Übereinstimmung überprüfen., Verwenden Sie dies, wenn die Platzhaltermuster nicht flexibel genug für Sie sind.

 $value = 'S-ATX-SQL01' if ( $value -match 'S-\w\w\w-SQL\d\d') { # do something }

Ein Regex-Muster stimmt standardmäßig mit einer beliebigen Stelle in der Zeichenfolge überein. Sie können also einen Teilstring angeben, den Sie wie folgt abgleichen möchten:

 $value = 'S-ATX-SQL01' if ( $value -match 'SQL') { # do something }

Regex ist eine komplexe Sprache für sich und einen Blick wert. Ich spreche mehr über -match und die vielen Möglichkeiten, Regex in einem anderen Artikel zu verwenden.,

Variations:

  • -match case insensitive regex
  • -imatch case insensitive regex
  • -cmatch case sensitive regex
  • -notmatch case insensitive regex not matched
  • -inotmatch case insensitive regex not matched
  • -cnotmatch case sensitive regex not matched

-is of type

You are able to check a value’s type with the -is operator.,

 if ( $value -is ) { # do something }

Sie können dies verwenden, wenn Sie mit Klassen arbeiten oder verschiedene Objekte über die Pipeline akzeptieren. Sie können entweder einen Dienst-oder einen Dienstnamen als Eingabe verwenden. Überprüfen Sie dann, ob Sie einen Dienst haben, und rufen Sie den Dienst ab, wenn Sie nur den Namen haben.,

 if ( $Service -isnot ) { $Service = Get-Service -Name $Service }

Variationen:

  • -is vom Typ
  • -isnot nicht vom Typ

Sammlungsoperatoren

Wenn Sie die vorherigen Operatoren mit einem einzelwert, das Ergebnis ist $true oder $false. Dies wird bei der Arbeit mit einer Sammlung etwas anders gehandhabt. Jedes Element in der Sammlung wird ausgewertet und der Operator gibt stattdessen jeden Wert zurück, der als $trueausgewertet wird.,

 PS> 1,2,3,4 -eq 3 3

Dies funktioniert immer noch korrekt in einer Anweisung. Wenn also ein Wert von Ihrem Operator zurückgegeben wird, lautet die gesamte Anweisung $true.

 $array = 1..6 if ( $array -gt 3 ) { # do something }

Hier versteckt sich eine kleine Falle in den Details, auf die ich hinweisen muss. Wenn Sie den Operator auf diese Weise verwenden, ist es einfach, die Logik fälschlicherweise rückwärts zu betrachten., Wenn Sie mit einer Sammlung verwenden, wird $true wenn ein Element in der Sammlung nicht mit Ihrem Wert übereinstimmt.

 PS> 1,2,3 -ne 4 1 2 3

Dies mag wie ein cleverer Trick aussehen, aber wir haben Operatoren -contains und , die dies effizienter handhaben, und -notcontains wird korrekt das tun, was Sie erwarten.

– enthält

Der Operator -contains überprüft die Sammlung auf Ihren Wert., Sobald es eine Übereinstimmung findet, wird $true.

 $array = 1..6 if ( $array -contains 3 ) { # do something }

Dies ist der bevorzugte Weg, um zu sehen, wenn eine Sammlung enthält Ihren Wert. Die Verwendung von Where-Object ( oder -eq) durchläuft jedes Mal die gesamte Liste und ist erheblich langsamer.,

Variationen:

  • -contains case insensitive match
  • case insensitive match
  • -ccontains case sensitive match
  • -notcontains case insensitive not matched
  • -inotcontains case insensitive not matched
  • case sensitive not matched

-in

Der Operator ist genau wie der -contains operator außer die Sammlung ist auf der rechten Seite handseite.,

 $array = 1..6 if ( 3 -in $array ) { # do something }

Variations:

  • -in case insensitive match
  • -iin case insensitive match
  • -cin case sensitive match
  • -notin case insensitive not matched
  • -inotin case insensitive not matched
  • -cnotin case sensitive not matched

Logical operators

Logical operators are used to invert or combine other expressions.,

– nicht

Der Operator -not wechselt einen Ausdruck von $false zu $true oder von $true zu $false. Hier ist ein Beispiel, in dem wir eine Aktion ausführen möchten, wenn Test-Path $false.

 if ( -not ( Test-Path -Path $path ) )

Die meisten Operatoren, über die wir gesprochen haben, haben eine Variation, bei der Sie den Operator -not nicht verwenden müssen, aber es gibt immer noch Zeiten, in denen Sie ihn verwenden würden.

!,

Sie können ! als Alias für -notverwenden.

 if ( -not $value ){} if ( !$value ){}

Sie werden sehen ! verwendet mehr von menschen, die kommen aus anderen sprachen wie C#. Ich tippe es lieber aus, weil ich es schwer zu sehen finde, wenn ich schnell meine Skripte betrachte.

– und

Sie können Ausdrücke mit dem Operator kombinieren. Wenn Sie dies tun, müssen beide Seiten $true, damit der gesamte Ausdruck $true.,

 if ( ($age -gt 13) -and ($age -lt 55) )

In diesem Beispiel muss $age 13 oder älter für die linke Seite und weniger als 55 für die rechte Seite sein. Ich habe zusätzliche Klammern hinzugefügt, um es in diesem Beispiel klarer zu machen, aber sie sind optional, solange die Expression einfach ist. Hier ist das gleiche Beispiel ohne Sie.

 if ( $age -gt 13 -and $age -lt 55 )

Auswertung erfolgt von Links nach rechts. Wenn das erste Element mit $false ausgewertet wird, wird es vorzeitig beendet und führt nicht den richtigen Vergleich durch., Dies ist praktisch, wenn Sie sicherstellen müssen, dass ein Wert vorhanden ist, bevor Sie ihn verwenden. Test-Path zum Beispiel wird ein Fehler ausgegeben, wenn Sie ihm einen $null Pfad geben.

 if ( $null -ne $path -and (Test-Path -Path $path) )

-oder

Mit der -or können Sie zwei Ausdrücke angeben und $true wenn einer von ihnen $trueist.

 if ( $age -le 13 -or $age -ge 55 )

Genau wie beim Operator erfolgt die Auswertung von links nach rechts., Wenn der erste Teil $true, lautet die gesamte Anweisung $true und verarbeitet den Rest des Ausdrucks nicht.

Beachten Sie auch, wie die Syntax für diese Operatoren funktioniert. Sie benötigen zwei separate Ausdrücke. Ich habe gesehen, wie Benutzer versucht haben, so etwas zu tun $value -eq 5 -or 6 ohne ihren Fehler zu erkennen.

– xor exklusiv oder

Dieser ist etwas ungewöhnlich. -xor erlaubt nur einen Ausdruck zu $trueauszuwerten., Wenn also beide Elemente $false oder beide Elemente $true, lautet der gesamte Ausdruck $false. Eine andere Möglichkeit, dies zu betrachten, besteht darin, dass der Ausdruck nur $true wenn die Ergebnisse des Ausdrucks unterschiedlich sind.

Es ist selten, dass jemand diesen logischen Operator jemals verwendet, und ich kann mir kein gutes Beispiel ausdenken, warum ich ihn jemals verwenden würde.

Bitweise Operatoren

Bitweise Operatoren führen Berechnungen für die Bits innerhalb der Werte durch und erzeugen als Ergebnis einen neuen Wert., Das Unterrichten von bitweisen Operatoren geht über den Rahmen dieses Artikels hinaus, aber hier ist die Liste der sie.

  • -band binär UND
  • -bor binär ODER
  • binär exklusiv ODER
  • -bnot binär NICHT
  • -shl links verschieben
  • -shr rechts verschieben

PowerShell-Ausdrücke

Wir können normale PowerShell in der condition-Anweisung verwenden.,

 if ( Test-Path -Path $Path )

Test-Path gibt $true oder $false zurück, wenn es ausgeführt wird. Dies gilt auch für Befehle, die andere Werte zurückgeben.

 if ( Get-Process Notepad* )

Es wird ausgewertet $true wenn ein zurückgegebener Prozess vorliegt und $false wenn nichts vorhanden ist., Es ist durchaus gültig, Pipeline-Ausdrücke oder andere PowerShell-Anweisungen wie diese zu verwenden:

 if ( Get-Process | Where Name -eq Notepad )

Diese Ausdrücke können miteinander kombiniert werden mit den Operatoren und -or, aber Sie müssen möglicherweise Klammern verwenden, um sie in Unterausdrücke aufzuteilen.

 if ( (Get-Process) -and (Get-Service) )

Die Überprüfung auf $null

Ohne Ergebnis oder $null Wert wird ausgewertet $false in der if Anweisung., Wenn Sie speziell nach $null, ist es ratsam, die $null auf der linken Seite zu platzieren.

 if ( $null -eq $value )

Es gibt einige Nuancen beim Umgang mit $null Werten in PowerShell. Wenn Sie tiefer tauchen möchten, habe ich einen Artikel über alles, was Sie über $null wissen wollten.

Variablenzuweisung

Ich hätte fast vergessen, diese hinzuzufügen, bis Prasoon Karunan V mich daran erinnerte.,

Wenn Sie einer Variablen einen Wert zuweisen, wird der Wert normalerweise nicht an die Pipeline oder Konsole übergeben. Wenn Sie eine Variablenzuweisung in einem Unterausdruck ausführen, wird sie an die Pipeline übergeben.

 PS> $first = 1 PS> ($second = 2) 2

Sehen Sie, wie die $first Zuordnung keine Ausgabe hat und die $second Zuordnung tut? Wenn eine Zuweisung in einer – Anweisung ausgeführt wird, wird sie genau wie die obige $second – Zuweisung ausgeführt., Hier ist ein klares Beispiel, wie Sie es verwenden können:

 if ( $process = Get-Process Notepad* ) { $process | Stop-Process }

Wenn $process einen Wert zugewiesen wird, wird die Anweisung $true und dann wird die $process gestoppt.

Stellen Sie sicher, dass Sie dies nicht mit -eq verwechseln, da dies keine Gleichheitsprüfung ist. Dies ist eine obskure Funktion, von der die meisten Menschen nicht wissen, dass sie auf diese Weise funktioniert.,

Alternativer Ausführungspfad

Mit der – Anweisung können Sie eine Aktion nicht nur angeben, wenn die Anweisung $true ist, sondern auch, wenn sie $falseist. Hier kommt die else Anweisung ins Spiel.

else

Dieelse – Anweisung ist immer der letzte Teil derif – Anweisung, wenn sie verwendet wird.

In diesem Beispiel überprüfen wir die $path, um sicherzustellen, dass es sich um eine Datei handelt. Wenn wir die Datei finden, verschieben wir sie. Wenn nicht, schreiben wir eine Warnung., Diese Art der Verzweigungslogik ist sehr verbreitet.

Verschachtelt if

Dieif undelse Anweisungen nehmen einen Skriptblock an, sodass wir jeden PowerShell-Befehl darin platzieren können, einschließlich einer anderenif Anweisung. Dadurch können Sie viel kompliziertere Logik verwenden.

In diesem Beispiel testen wir zuerst den Happy Path und ergreifen dann Maßnahmen. Wenn dies fehlschlägt, führen wir eine weitere Überprüfung durch und geben dem Benutzer detailliertere Informationen.

elseif

Wir beschränken uns nicht nur auf eine einzige bedingte Prüfung., Wir können und else Anweisungen verketten, anstatt sie mit der elseif Anweisung zu verschachteln.

Die Ausführung erfolgt von oben nach unten. Die Anweisung top wird zuerst ausgewertet. Wenn das $false ist, dann geht es zum nächsten elseif oder else in der Liste. Diese letzte else ist die Standardaktion, wenn keine der anderen $true.,

switch

Zu diesem Zeitpunkt muss ich die switch – Anweisung erwähnen. Es bietet eine alternative Syntax für mehrere Vergleiche mit einem Wert. Mit der switch geben Sie einen Ausdruck an und dieses Ergebnis wird mit mehreren verschiedenen Werten verglichen. Wenn einer dieser Werte mach, wird der übereinstimmende Codeblock ausgeführt. Schauen Sie sich dieses Beispiel an:

 $itemType = 'Role' switch ( $itemType ) { 'Component' { 'is a component' } 'Role' { 'is a role' } 'Location' { 'is a location' } }

Es gibt drei mögliche Werte, die mit der $itemTypeübereinstimmen können., In diesem Fall stimmt es mit Role und die is a role würde ausgeführt. Ich habe ein sehr einfaches Beispiel verwendet, um Ihnen einen Einblick in den Operator switch zu geben. Ich spreche mehr über alles, was Sie jemals über die Switch-Anweisung wissen wollten, in einem anderen Artikel.

Pipeline

Die Pipeline ist ein sehr einzigartiges und wichtiges Merkmal von PowerShell. Jeder Wert, der nicht unterdrückt oder einer Variablen zugewiesen wird, wird in die Pipeline eingefügt., Die bietet uns eine Möglichkeit, die Pipeline auf eine Weise zu nutzen, die nicht immer offensichtlich ist.

 $discount = if ( $age -ge 55 ) { Get-SeniorDiscount } elseif ( $age -le 13 ) { Get-ChildDiscount } else { 0.00 }

Jeder Skriptblock platziert die Ergebnisse die Befehle oder den Wert in die Pipeline. Dann weisen wir das Ergebnis der if-Anweisung der Variablen $discount zu. Dieses Beispiel hätte diese Werte genauso einfach der Variablen $discount direkt in jedem Scriptblock zuweisen können., Ich kann nicht sagen, dass ich dies sehr oft mit der Anweisung , aber ich habe ein Beispiel, in dem ich dies kürzlich verwendet habe.

Array inline

ich habe eine Funktion namens Invoke-SnowSql, startet eine ausführbare Datei mit einigen Kommandozeilen-Argumente. Hier ist ein Clip von dieser Funktion, in dem ich das Array von Argumenten erstelle.

Die Variablen $Debug und $Path sind Parameter der Funktion, die vom Endbenutzer bereitgestellt werden. Ich bewerte sie inline innerhalb der Initialisierung meines Arrays aus., Wenn $Debug wahr ist, dann sind diese Werte fallen in die $snowSqlParam in der richtigen Stelle. Gleiches gilt für die Variable $Path.

Vereinfachen Sie komplexe Operationen

Es ist unvermeidlich, dass Sie in eine Situation geraten, in der viel zu viele Vergleiche zu überprüfen sind, und Ihre if Anweisung scrollt weit von der rechten Seite des Bildschirms.

Sie können schwer zu lesen sein und machen Sie anfälliger für Fehler. Es gibt ein paar Dinge, die wir dagegen tun können.,

Zeilenfortsetzung

Es gibt einige Operatoren in PowerShell, mit denen Sie Ihren Befehl in die nächste Zeile einfügen können. Die logischen Operatoren und -or sind gute Operatoren, wenn Sie Ihren Ausdruck in mehrere Zeilen aufteilen möchten.

Da ist noch viel los, aber jedes Stück auf seine eigene Linie zu setzen macht einen großen Unterschied. Ich mache das im Allgemeinen nur, wenn ich mehr als zwei Vergleiche bekomme oder wenn ich nach rechts scrollen muss, um einen der Ligic zu lesen.,

Ergebnisse vorberechnen

Wir können diese Anweisung aus der if-Anweisung nehmen und nur das Ergebnis überprüfen.

Das fühlt sich einfach viel sauberer an als im vorherigen Beispiel. Sie haben auch die Möglichkeit, einen Variablennamen zu verwenden, der erklärt, was Sie wirklich überprüfen. Dies ist auch ein Beispiel für selbstdokumentierenden Code, der unnötige Kommentare speichert.

Mehrere if-Anweisungen

Wir können dies in mehrere Anweisungen aufteilen und sie einzeln überprüfen. In diesem Fall verwenden wir ein Flag oder eine Tracking-Variable, um die Ergebnisse zu kombinieren.,

Ich musste die Logik invertieren, damit die Flag-Logik korrekt funktioniert. Jede Auswertung ist eine individuelle Anweisung. Der Vorteil davon ist, dass Sie beim Debuggen genau sagen können, was die Logik tut. Ich konnte gleichzeitig viel bessere Ausführlichkeit hinzufügen.

Der offensichtliche Nachteil ist, dass es so viel mehr code zu schreiben. Der Code ist komplexer zu betrachten, da er eine einzelne Logikzeile benötigt und in 25 oder mehr Zeilen explodiert.

Mit den Funktionen

können wir auch die gesamte Validierungslogik in eine Funktion verschieben., Schau dir an, wie sauber das auf einen Blick aussieht.

 if ( Test-SecureDriveConfiguration -ADUser $user ) { # do something }

Sie müssen immer noch die Funktion erstellen, um die Validierung durchzuführen, aber es macht diesen Code viel einfacher zu arbeiten. Es macht diesen Code einfacher zu testen. In Ihren Tests können Sie den Aufruf von Test-ADDriveConfiguration verspotten und Sie benötigen nur zwei Tests für diese Funktion. Eine, bei der $true und eine, bei der $false. Das Testen der anderen Funktion wird einfacher, weil sie so klein ist.,

Der Hauptteil dieser Funktion könnte immer noch der Einzeiler sein, mit dem wir begonnen haben, oder die explodierte Logik, die wir im letzten Abschnitt verwendet haben. Dies funktioniert gut für beide Szenarien und ermöglicht es Ihnen, diese Implementierung später einfach zu ändern.

Fehlerbehandlung

Eine wirklich wichtige Verwendung der – Anweisung besteht darin, nach Fehlerbedingungen zu suchen, bevor Fehler auftreten. Ein gutes Beispiel ist zu überprüfen, ob ein Ordner bereits vorhanden ist, bevor Sie versuchen, ihn zu erstellen.,

 if ( -not (Test-Path -Path $folder) ) { New-Item -Type Directory -Path $folder }

Ich möchte sagen, wenn Sie eine Ausnahme erwarten, dann ist es nicht wirklich eine Ausnahme. Überprüfen Sie also Ihre Werte und validieren Sie Ihre Bedingungen, wo Sie können.

Wenn Sie ein wenig mehr in die tatsächliche Ausnahmebehandlung eintauchen möchten, habe ich einen Artikel über alles, was Sie jemals über Ausnahmen wissen wollten.

Letzte Worte

Die Anweisung ist eine so einfache Anweisung, aber ein sehr grundlegendes Stück PowerShell. Sie werden dies in fast jedem Skript, das Sie schreiben, mehrmals verwenden., Ich hoffe, Sie haben ein besseres Verständnis als zuvor.

Share

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.