netzwerkdude
Goto Top

Powershell fehler einer funktion prüfen bzw. weitergeben

Moin,

ich will prüfen ob eine funktion erfolgreich durchläuft oder nicht, dannach entsprechend fortfahren - also an sich nichts weltbewegendes.
Hier ein einfaches beispiel:

function demo ($ziel) {
Test-Connection $ziel -count 1
Write-Host "status innerhalb der function " $?  
}

demo host-gibts-nicht
Write-Host "status außerhalb der function " $?  

Hier die Ausgabe:
PS C:\Users\Ich> C:\Users\Ich\Downloads\demo.ps1
Test-Connection : Fehler beim Testen der Verbindung mit dem Computer "host-gibts-nicht": Der angegebene Host ist unbekannt  
In C:\Users\Ich\Downloads\demo.ps1:3 Zeichen:1
+ Test-Connection $ziel -count 1
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : ResourceUnavailable: (host-gibts-nicht:String) [Test-Connection], PingException
    + FullyQualifiedErrorId : TestConnectionException,Microsoft.PowerShell.Commands.TestConnectionCommand
 
status innerhalb der function  False
status außerhalb der function  True

wenn ich das richtig verstehe, funtioniert die prüfung mit $? innerhalb der funktion wie gewünscht, aber wenn ich $? aus dem hauptprogramm aufrufe, enthält es True, da es ein anderes "letzes commando" prüft?
Wie kann ich aus dem hauptprogramm prüfen ob die funktion einen fehler hatte, oder nicht?

Content-Key: 354410

Url: https://administrator.de/contentid/354410

Ausgedruckt am: 20.04.2024 um 00:04 Uhr

Mitglied: emeriks
Lösung emeriks 10.11.2017 aktualisiert um 12:18:24 Uhr
Goto Top
Hi,
wie wärs mit Rückgabewert?
function demo ($ziel) {
Test-Connection $ziel -count 1
$ReturnValue = $?
Write-Host "status innerhalb der function " $ReturnValue  
Return $ReturnValue
}

$Test = demo("host-gibts-nicht")  
Write-Host "status außerhalb der function " $Test  

E.
Mitglied: NetzwerkDude
NetzwerkDude 10.11.2017 um 12:28:26 Uhr
Goto Top
gut, danke!
Mitglied: 134464
134464 10.11.2017 aktualisiert um 16:16:58 Uhr
Goto Top
Das geht kürzer indem man einfach den Parameter -quiet nutzt, dann gibt die Function True oder False zurück
function demo ($ziel) {
    Return (Test-Connection $ziel -count 1 -quiet)
}
If (!(Demo "Host")){  
    "Host nicht erreichbar."  
}else{
    "Host online"  
}
Mitglied: NetzwerkDude
NetzwerkDude 12.11.2017 um 11:59:33 Uhr
Goto Top
Danke für den Hinweis, habe den o.g. Code nur als "einfaches Beispiel" genommen, mir ging es um das Grundsätzliche Verhalten von $?