# Ternary Operatoren ## Bis jetzt $a = 4 if ($a -gt 4) {"Zahl größer als 4"} else {"Zahl kleiner/gleich als 4"} ## Jetzt kann das mit einem Fragezeichen gelöst werden ## ? : $a = 6 $a -gt 4 ? ("Zahl größer als 4"):("Zahl kleiner/gleich als 4") # Null Operatoren $b = $null ## Bis jetzt if (!($b)) {"b ist vom wert null"} else {"b hat den Wert $b"} ## ab PS7 $b ?? {"b ist vom wert null NEU"} # Ketten Operatoren ## && Prüfen ob der erste Teil der Pipeline erfolgreich ist (gps 'notepad.exe' -ea 0|out-null) && 'Notepad läuft' (gps 'pwsh' -ea 0|out-null) && 'PowerShell 7 läuft' ## || Führe etwas aus wenn der erste Befehl keinen Fehler liefert. (gps 'notepad.exe' -ea 0|out-null) || 'Notepad läuft NICHT' (gps 'pwsh' -ea 0|out-null) || 'PowerShell 7 läuft NICHT' # Systemvariablen Werte mit TAB setzen $DebugPreference $ErrorActionPreference # Foreach-Object Parallel ## OHNE Measure-Command -Expression {'*.sys*','*.txt','*.log'|foreach-object {get-childitem $env:windir -Filter $_ -Recurse -ea 0}}|select-object TotalSeconds ## MIT Measure-Command -Expression {'*.sys*','*.txt','*.log'|foreach-object -Parallel {get-childitem $env:windir -Filter $_ -Recurse -ea 0}}|select-object TotalSeconds ### Macht nicht immer Sinn. Measure-Command -Expression {'*.dll*','*.xsd','*.psd1','*.xml','*.psm1'|foreach-object -parallel {get-childitem $PsHome -Filter $_ -Recurse -ea 0}}|select-object TotalSeconds Measure-Command -Expression {'*.dll*','*.xsd','*.psd1','*.xml','*.psm1'|foreach-object {get-childitem $PsHome -Filter $_ -Recurse -ea 0}}|select-object TotalSeconds