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

Printed on: November 28, 2023 at 22:11 o'clock

Member: emeriks
Solution emeriks Nov 10, 2017 updated at 11:18:24 (UTC)
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.
Member: NetzwerkDude
NetzwerkDude Nov 10, 2017 at 11:28:26 (UTC)
Goto Top
gut, danke!
Mitglied: 134464
134464 Nov 10, 2017 updated at 15:16:58 (UTC)
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"  
}
Member: NetzwerkDude
NetzwerkDude Nov 12, 2017 at 10:59:33 (UTC)
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 $?