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:
Hier die Ausgabe:
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?
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?
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 354410
Url: https://administrator.de/forum/powershell-fehler-einer-funktion-pruefen-bzw-weitergeben-354410.html
Ausgedruckt am: 05.04.2025 um 12:04 Uhr
4 Kommentare
Neuester Kommentar

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"
}