[powershell] Return Values in Funktionen

Gepostet am: Dec 08, 2014 3:24:41 PM

Powershell hat ein nicht immer klares Verhalten in Bezug auf die Rückgabewerte einer Funktion.

Beispiel Rückgabewerte

function returnValueTest1() {     "Test1"     return "Test2" }  Write-host "Beispiel 1:" -ForegroundColor Red $ret = returnValueTest1 $ret[0] #liefert Test1$ret[1] #liefert Test2#**************************function returnValueTest2() {     "Test1" | Out-Null     return "Test2" }  Write-host "Beispiel 2:" -ForegroundColor Red $ret = returnValueTest2 $ret #liefert Test2$ret[0] #liefert T (erster Buchstabe)#**************************function returnValueTest3() {     "Test1" | Out-Null     return,"Test2" #erzwingt einen Array als Rückgabewert }  Write-host "Beispiel 3:" -ForegroundColor Red $ret = returnValueTest3 $ret #liefert Test2$ret[0] #liefert T (erster Buchstabe)#**************************function returnValueTest4([string]$myString) {     $ismatching = $myString -match "^.*?-.*?$"     if ($ismatching -eq $true) {         $myString -match '^(.*?)-(.*?)$'         $Teil1 = $Matches[1].trim()     } else {         $Teil1 = "Unbekannt"     }     return $Teil1 } Write-host "Beispiel 4:" -ForegroundColor Red Write-host "Beispiel 4a:" -ForegroundColor Blue $ret = returnValueTest4("Ein-Test") $ret #liefert true,Ein$ret[1] #liefert Ein Write-host "Beispiel 4a:" -ForegroundColor Blue $ret = returnValueTest4("Ein Test") $ret #liefert Unbekannt$ret[1] #liefert nfunction returnValueTest5([string]$myString) {     $ismatching = $myString -match "^.*?-.*?$"     if ($ismatching -eq $true) {         $myString -match '^(.*?)-(.*?)$' | Out-Null         $Teil1 = $Matches[1].trim()     } else {         $Teil1 = "Unbekannt"     }     return $Teil1 } Write-host "Beispiel 5:" -ForegroundColor Red Write-host "Beispiel 5a:" -ForegroundColor Blue $ret = returnValueTest5("Ein-Test") $ret #liefert Ein Write-host "Beispiel 5a:" -ForegroundColor Blue $ret = returnValueTest5("Ein Test") $ret #liefert Unbekannt