netzwerkdude

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?
Auf Facebook teilen
Auf X (Twitter) teilen
Auf Reddit teilen
Auf Linkedin teilen

Content-ID: 354410

Url: https://administrator.de/forum/powershell-fehler-einer-funktion-pruefen-bzw-weitergeben-354410.html

Ausgedruckt am: 04.05.2025 um 07:05 Uhr

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.
NetzwerkDude
NetzwerkDude 10.11.2017 um 12:28:26 Uhr
Goto Top
gut, danke!
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"  
}
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 $?