PowerShell 7: Ternärer Operator ? :
In PowerShell 7.0 hat Microsoft auch den ternären Operator ? : als Alternative zu if … else eingeführt.
In PowerShell 7.0 hat Microsoft auch den ternären Operator ? :
als Alternative zu if … else
eingeführt.
Schon seit Windows PowerShell 1.0 [1] kann man if…else
nicht nur für Befehlsblöcke, sondern auch für Ausdrücke als sogenannten "ternären Operator" (Ternary Operator) nutzen. In PowerShell 7.0 [2] hat Microsoft auch den prägnanteren ternären Operator ? :
als Alternative zu if … else
eingeführt.
Im folgenden Beispiel erhält $Anzeige
abhängig von der Bedingung einen anderen Wert:
[DateTime]::Now.Second
$Bedingung = [DateTime]::Now.Second % 2 -eq 0
$Bedingung
$Anzeige = if ($Bedingung) { "gerade" } else { "ungerade" }
$Anzeige
Seit PowerShell 7.0 kann man für den ternären Operator auch die in zum Beispiel C++, C# und Java übliche prägnant Schreibweise Bedingung ? True-Fall : False-Fall
verwenden:
[DateTime]::Now.Second
$Bedingung = [DateTime]::Now.Second % 2 -eq 0
$Bedingung
$Anzeige = ? ($Bedingung) { "gerade" } : { "ungerade" }
$Anzeige
Weiteres Beispiel:
alt:
$ausgabe = (Test-Path c:\temp) ? "Temp-Verzeichnis vorhanden" : "Temp-Verzeichnis nicht vorhanden"
neu:
$ausgabe = (Test-NetConnection MeinServer123).PingSucceeded ? "Server erreichbar" : "Server nicht erreichbar!"
In einem weiteren Beispiel ist im else
-Fall nur eine leere Zeichenkette zu liefern. Hier kann man bei if
den else
-Fall weglassen. Beim neuen Operator ? :
geht dies nicht. Die PowerShell würde sich beschweren mit "Missing ':' in the ternary expression."
alt:
Write-host "$c ist$(if (-not $istOnline) { " NICHT" }) erreichbar" -ForegroundColor "$(if ($istOnline) { "Green" } else { "Red" })"
neu:
Write-host "$c ist$(-not $istOnline ? ' NICHT' : '') erreichbar" -ForegroundColor "$($istOnline ? "Green" : "Red")"
( [3])
URL dieses Artikels:
https://www.heise.de/-4934407
Links in diesem Artikel:
[1] https://dotnet-lexikon.de/Windows_PowerShell/lex/4154.aspx
[2] https://dotnet-lexikon.de/PowerShell_7/lex/9593.aspx
[3] mailto:hs@ix.de
Copyright © 2020 Heise Medien