Ty-catch will nicht so wie ich
Moin,
ich habe folgende Funktion:
Sinn des Ganzen ist, eine Datei automatisiert einmal die Woche zu verschicken. Wie Ihr seht, soll das zehnmal versucht werden, bevor endgültig abgebrochen wird. Im catch steht deshalb der rekursive Aufruf der Funktion. Aber es will nicht so, wie ich das gerne hätte. Kommt es auf Grund eines falschen Keys (übergeben zum Testen) zu einem Fehler (hier das Log):
dann wird nicht catch ausgeführt, sondern das Skript bricht so ab, als wäre es erfolgreich gelaufen. Versuch 2, 3 ... werden also nicht ausgeführt. Was mache ich falsch? Wahrscheinlich wieder irgend eine Tomate auf den Augen.
Noch zwei Infos:
Genutzt wird das Modul posh-ssh direkt vom Repo aus installiert.
Liebe Grüße
Erik
ich habe folgende Funktion:
function send-data2xxx {
try {
Out-File $log -InputObject "Versuch $($counter +1) die Datei zu verschicken." -Append -encoding utf8
Set-SCPItem -path $file -ComputerName $comp -Credential $cred -Destination $dest -Port 4711 -KeyFile $key -erroraction continue 2>&1 | out-file $log -append -encoding utf8 -ErrorAction continue
}
catch {
if($counter -lt 10) {
# Zehn Sekunden warten. Es wird ja einen Grund haben, warum es gerade nicht ging.
Start-Sleep -Seconds 10
$counter++
send-data2xxx
}
else {
Out-File $log -InputObject "Vorgang um $(get-date) endgültig abgebrochen." -append -Encoding utf8
send-mail2itservice -station $station
}
}
}
Sinn des Ganzen ist, eine Datei automatisiert einmal die Woche zu verschicken. Wie Ihr seht, soll das zehnmal versucht werden, bevor endgültig abgebrochen wird. Im catch steht deshalb der rekursive Aufruf der Funktion. Aber es will nicht so, wie ich das gerne hätte. Kommt es auf Grund eines falschen Keys (übergeben zum Testen) zu einem Fehler (hier das Log):
Log für 08/12/2021 13:04:00
Versuch 1 die Datei zu verschicken.
Set-SCPItem : Permission denied (publickey).
In send-data2xxx.ps1:71 Zeichen:9
+ Set-SCPItem -path $file -ComputerName $comp -Credenti ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : Sicherheitsfehler: (Renci.SshNet.ScpClient:ScpClient) [Set-SCPItem], SshAuthenticationEx
ception
+ FullyQualifiedErrorId : SSH.SetScpItem
dann wird nicht catch ausgeführt, sondern das Skript bricht so ab, als wäre es erfolgreich gelaufen. Versuch 2, 3 ... werden also nicht ausgeführt. Was mache ich falsch? Wahrscheinlich wieder irgend eine Tomate auf den Augen.
Noch zwei Infos:
Name Value
---- -----
PSVersion 5.1.19041.1151
PSEdition Desktop
PSCompatibleVersions {1.0, 2.0, 3.0, 4.0...}
BuildVersion 10.0.19041.1151
CLRVersion 4.0.30319.42000
WSManStackVersion 3.0
PSRemotingProtocolVersion 2.3
SerializationVersion 1.1.0.1
Genutzt wird das Modul posh-ssh direkt vom Repo aus installiert.
Liebe Grüße
Erik
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 1148439033
Url: https://administrator.de/forum/ty-catch-will-nicht-so-wie-ich-1148439033.html
Ausgedruckt am: 29.03.2025 um 07:03 Uhr
3 Kommentare
Neuester Kommentar

dann wird nicht catch ausgeführt, sondern das Skript bricht so ab, als wäre es erfolgreich gelaufen. Versuch 2, 3 ... werden also nicht ausgeführt. Was mache ich falsch? Wahrscheinlich wieder irgend eine Tomate auf den Augen.
Jepp du hast ihn (un)absichtlich provoziert -erroraction continue 2>&1
Der Fehler liegt ganz klar hier, weil du die Action mit continue weiterlaufen lässt wird bei einem Fehler keine echte Exception produziert und somit auch kein Catch Teil aufgerufen! Du musst die Action auf jeden Fall so stoppen lassen-ErrorAction Stop
damit sie eine echte Exception wirft und dadurch der Catch Teil getriggert wird!
Virtuellen Kaffe rüber schieb.
LG /evo

Auf die Pizza schnibbel
, schleck ....