13. März 2019 Aleksej Kusnir

PowerShell wichtige Vergleichsoperatoren einfach erklärt

In jedem PowerShell Script sind PowerShell Vergleichsoperatoren unerlässlich.

Möchten Sie wissen, welche Vergleichsoperatoren es gibt und wie Sie diese richtig anwenden?

Gemeinsam gehen wir die wichtigsten Operatoren durch und ich zeige Ihnen anhand von konkreten Beispielen, wie Sie diese in PowerShell Scripten nutzen.

Bevor wir aber sofort in die Praxis einsteigen, ein bisschen Theorie zum warm werden 🙂

Was sind Vergleichsoperatoren?

In einem PowerShell Script kommt immer wieder eine Situation, wo Sie eine Logik einbauen müssen. 

Eine einfache Logik ist zu überprüfen, ob ein bestimmter Wert größer, kleiner oder gleich ist.

Oder Sie möchten zwei PowerShell Objekte mit einander vergleichen, um daraufhin eine Funktion auszuführen? 

PowerShell hat hierfür Vergleichsoperatoren in 4 verschiedene Bereiche aufgeteilt, die teils ähnliche Ergebnisse liefern, aber effizienter in Ihrem Teilbereich genutzt werden können.

VergleichObjekte Triff zu Beinhaltet
-eq 
-ne 
-gt 
-ge 
-lt 
-le 
-is 
-isnot 
-like 
-notlike 
-match 
-notmatch
-contains 
-notcontains 
-in 
-notin 

Die Dokumentation zu den PowerShell Vergleichsoperatoren finden Sie in der Microsoft Dokumentation

Nun möchte Ich mit Ihnen gemeinsam die einzelnen Vergleichsoperatoren durchgehen und Beispiele aus der Praxis vorstellen.

Beispiele für Vergleichsoperatoren aus der Praxis

Vergleich

-eq 

Mit dem -eq Parameter vergleichen Sie ob ein Wert gleich ist. 

Wenn A gleich B ist, dann mache etwas. In diesem Fall wird einfach ein Text in der PowerShell Konsole ausgegeben. 

$a=2 
$b=2 

if($a -eq $b) 
{ 
    Write-Host $a ist gleich $b 
} 
else 
{ 
   Write-Host $a ist nicht gleich $b 
}

-ne

Mit dem -ne Parameter vergleichen Sie ob ein Wert ungleich ist. 

Wenn A ungleich B ist, dann mache etwas. In diesem Fall wird einfach ein Text in der PowerShell Konsole ausgegeben.

$a=1 
$b=2 

if($a -ne $b) 
{ 
    Write-Host $a ist ungleich $b 
} 
else 
{ 
   Write-Host $a ist gleich $b
}

-gt

Mit dem -gt Parameter vergleichen Sie ob ein Wert größer ist. 

Wenn A größer B ist, dann mache etwas. In diesem Fall wird einfach ein Text in der PowerShell Konsole ausgegeben.

$a=3 
$b=2 

if($a -eq $b) 
{ 
    Write-Host $a ist größer $b 
} 
else 
{ 
   Write-Host $a ist nicht größer $b 
}

-ge

Mit dem -ge Parameter vergleichen Sie ob ein Wert größer oder gleich ist. 

Wenn A größer oder gleich B ist, dann mache etwas. In diesem Fall wird einfach ein Text in der PowerShell Konsole ausgegeben. 

$a=2 
$b=2 

if($a -ge $b) 
{ 
    Write-Host $a ist größer oder gleich $b 
} 
else 
{ 
   Write-Host $a ist kleiner $b 
}

-lt 

Mit dem -lt Parameter vergleichen Sie ob ein Wert kleiner ist. 

Wenn A kleiner B ist dann mache etwas. In diesem Fall wird einfach ein Text in der PowerShell Konsole ausgegeben. 

$a=1 
$b=2 

if($a -lt $b) 
{ 
    Write-Host $a ist kleiner $b 
} 
else 
{ 
   Write-Host $a ist nicht kleiner $b  
}

-le 

Mit dem -le Parameter vergleichen Sie ob ein Wert kleiner oder gleich ist. 

Wenn A kleiner oder gleich B ist, dann mache etwas. In diesem Fall wird einfach ein Text in der PowerShell Konsole ausgegeben. 

$a=2 
$b=2 

if($a -eq $b) 
{ 
    Write-Host $a ist kleiner oder gleich $b 
} 
else 
{ 
   Write-Host $a ist größer $b 
}

Objekt vergleich 

-is 

Mit dem -is Parameter vergleichen Sie ob zwei Objekte den gleichen Objekt Typ haben. 

Wenn A Objekt Typ gleich Objekt Typ B, dann mache etwas. In diesem Fall wird einfach ein Text in der PowerShell Konsole ausgegeben.

$a=2 
$b="2" # Dies ist ein String. Somit sind die beiden nicht gleich. 

if($a -is $b.GetType()) 
{ 
    Write-Host $a ist gleich $b 
} 
else 
{ 
   Write-Host $a ist nicht gleich $b 
}

-isnot 

Mit dem -isnot Parameter vergleichen Sie ob ein Objekt ungleich ist. 

Wenn Objekt A Type ungleich Objekt Type B, dann mache etwas. In diesem Fall wird einfach ein Text in der PowerShell Konsole ausgegeben.

$a=2 
$b="2" 

if($a -is $b.GetType()) 
{ 
    Write-Host $a ist ungleich $b 
} 
else 
{ 
   Write-Host $a ist gleich $b 
}

Triff zu 

-like 

Mit dem -like Parameter vergleichen Sie ob ein Wert ähnelt. Dazu nutzen wir das „*“ als Synonym für davor oder danach Werte. 

Wenn A ähnlich B ist, dann mache etwas. In diesem Fall wird einfach ein Text in der PowerShell Konsole ausgegeben. 

$a="was" 
$b="wa*" 

if($a -like $b) 
{ 
    Write-Host $a ist ähnlich $b 
} 
else 
{ 
   Write-Host $a ist nicht ähnlich $b 
}

-notlike 

Mit dem -notlike Parameter vergleichen Sie ob ein Wert nicht ähnelt. Dazu nutzen wir das „*“ als Synonym für davor oder danach Werte. 

Wenn A Werte B nicht ähnlich sind, dann mache etwas. In diesem Fall wird einfach ein Text in der PowerShell Konsole ausgegeben. 

$a="was" 
$b="wa*" 

if($a -notlike $b) 
{ 
    Write-Host $a ist nicht ähnlich $b 
} 
else 
{ 
   Write-Host $a ist ähnlich $b 
}

-match 

Mit dem -match Parameter vergleichen Sie ob ein Wert zu einem anderen passt z.B. passt „Mon“ zu „Montag“ 

Wenn A zu B passt, dann mache etwas. In diesem Fall wird einfach ein Text in der PowerShell Konsole ausgegeben. 

$a="Montag" 
$b="Mon" 

if($a -match $b) 
{ 
    Write-Host $a ist gleich $b 
} 
else 
{ 
   Write-Host $a ist nicht gleich $b 
}

-notmatch 

Mit dem -notmatch Parameter vergleichen Sie ob ein Wert zu einem anderen nicht passt z.B. passt „Die“ nicht zu „Montag“ 

Wenn A zu B nicht passt, dann mache etwas. In diesem Fall wird einfach ein Text in der PowerShell Konsole ausgegeben. 

$a="Montag" 
$b="Die" 

if($a -notmatch $b) 
{ 
    Write-Host $a passt nicht zu $b 
} 
else 
{ 
   Write-Host $a passt zu $b 
}

Beinhaltet 

-contains 

Mit dem -contains Parameter vergleichen Sie ob ein Wert enthalten ist. z.B. können Sie so ein Array durchsuchen. 

Wenn A im Array B enthalten ist, dann mache etwas. In diesem Fall wird einfach ein Text in der PowerShell Konsole ausgegeben. 

$a="Montag","Dienstag","Mittwoche" 
$b="Dienstag" 

if($a -contains $b) 
{ 
    Write-Host $b ist enthalten 
} 
else 
{ 
   Write-Host $b ist nicht enthalten 
}

-notcontains 

Mit dem -contains Parameter vergleichen Sie ob ein Wert enthalten ist. z.B. können Sie so ein Array durchsuchen. 

Wenn A im Array B enthalten ist, dann mache etwas. In diesem Fall wird einfach ein Text in der PowerShell Konsole ausgegeben. 

$a="Montag","Dienstag","Mittwoche" 
$b="Freitag" 

if($a -notcontains $b) 
{ 
    Write-Host $b ist nicht enthalten 
} 
else 
{ 
   Write-Host $b ist enthalten 
}

-in 

Mit dem -in Parameter vergleichen Sie ob ein ein Wert oder Array Werte in einem anderen Array enthalten sind. 

Wenn A Werte in B enthalten sind, dann mache etwas. In diesem Fall wird einfach ein Text in der PowerShell Konsole ausgegeben. 

$a="Fenster" 
$b="Fenster","Balkon","Haus" 

if($a -in $b) 
{ 
    Write-Host $a ist gleich $b 
} 
else 
{ 
   Write-Host $a ist nicht gleich $b 
}

-notin 

Mit dem -notin Parameter vergleichen Sie ob ein Wert oder Array Werte in einem anderen Array nicht enthalten sind. 

Wenn A Werte in B nicht enthalten sind, dann mache etwas. In diesem Fall wird einfach ein Text in der PowerShell Konsole ausgegeben. 

$a="Bal" 
$b="Fenster","Balkon","Haus" 

if($a -notin $b) 
{ 
    Write-Host $a ist nicht enthalten 
} 
else 
{ 
   Write-Host $a ist gleich $b 
}

Fazit 

Wir haben nun gemeinsam in diesem Tutorial die Vergleichsoperatoren für PowerShell kennengelernt. 

Sie haben gesehen, dass es je nach Einsatzgebiet verschiedene Vergleichsoperatoren gibt. 

Anhand von Beispielen haben Sie gelernt, wie Sie die Vergleichsoperatoren in PowerShell nutzen können. 

Ich wünsche Ihnen viel Spaß und Erfolg bei Ihren PowerShell Scripten. 

Aleksej Kusnir