[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