Ambix 10 Geschrieben 5. Mai 2015 Melden Teilen Geschrieben 5. Mai 2015 Hallo zusammen, ich habe mir gerade mein erstes Powershell skript zusammengebaut und komme nicht weiter: Das Skript ruft unter anderem ein externes Programm auf. Falls irgendetwas während der Skriptausführung schiefgeht, möchte ich eine Mail mit dem Fehler versenden: $ErrorActionPreference = "Stop" try { Tu_dies_und_das &C:\Programme\ghostscript.exe -q -dNOPAUSE -dBATCH ... } catch { sendmail panic@fabrikam.com body=$error[0] } Das hab ich in der ISE gemacht und da funktioniert alles wie gewünscht. Verfälsche ich einen Parameter im ghostscript Aufruf bekomme ich im Mailbody die Fehlermeldung geliefert, die Ghostscript.exe ausgibt, z.B. GPL Ghostscript 9.16: **** Could not open the file D:\test.pdf. Dann habe ich das Ganze in den Taskplaner gepackt, weil das Skript regelmässig laufen soll. Provoziere ich einen Fehler in Tu_dies_und_das, bekomme ich immer noch eine Mail. Wenn aber Ghostscript auf einen Fehler läuft, bekomme ich nichts. Im Taskplaner steht: powershell -noprofile -file D:\MeinErstesSkript.ps1 Nach langer Suche habe ich nur gefunden, dass das gar nicht funktionieren dürfte (auch nicht in der ISE?), weil ich Fehler von externen Programmen mit Try/Catch gar nicht erwischen kann. Also flugs mein Skript modifiziert: Tu_dies_und_das &C:\Programme\ghostscript.exe -q -dNOPAUSE -dBATCH ... if ($LastExitCode -ne 0) { throw $error[0] } } catch... Jetzt bekomme ich auch bei Ghostscript Fehlern eine Mail, aber als Fehlertext gibt es nur: ScriptHalted Gibt es nicht doch eine Möglichkeit, den Ghostscript Fehlertext in meine Mail zu bekommen? Lieben Dank Frank Zitieren Link zu diesem Kommentar
daabm 1.356 Geschrieben 6. Mai 2015 Melden Teilen Geschrieben 6. Mai 2015 Das geht nur, wenn Du die Ausgabe von Ghostscript "abfängst". Entweder in eine Datei umleiten (">Ghostlog.txt 2>&1" an den Aufruf anhängen) und die als Attachment anhängen. Oder https://www.google.de/search?q=powershell+capture+screen+output+of+external+programs Zitieren Link zu diesem Kommentar
Ambix 10 Geschrieben 14. Mai 2015 Autor Melden Teilen Geschrieben 14. Mai 2015 Super, der Link hat weitergeholfen! Endergebnis ist somit: $ErrorActionPreference = "Stop" try { Tu_dies_und_das $GSerr= (&C:\Programme\ghostscript.exe -q -dNOPAUSE -dBATCH "-sOutputFile=$TIFfile" $PDFfile) | Out-String if ($LastExitCode -ne 0) { throw $GSerr } } catch { sendmail panic@fabrikam.com body=$error[0] } Tausend Dank für Deine Hilfe! Frank Zitieren Link zu diesem Kommentar
Empfohlene Beiträge
Schreibe einen Kommentar
Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.