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
- -eq für Gleichheit
- 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
- Ergebnisse vorberechnen
- Mehrere if-Anweisungen
- Verwenden von Funktionen
li>
- 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 diescriptblock
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 BefehlWrite-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
daraufRestart-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 - !,pressions
-
-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> - – nicht
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 $true
ausgewertet 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 -not
verwenden.
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 $true
ist.
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 $true
auszuwerten., 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 $false
ist. 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.