none
DISM Skriptaktivierung mit TRY/CATCH RRS feed

  • Frage

  • Ich habe eine Problem. Ich will für DISM Restorehealth ein Autoscript schreiben für ein Projekt. 

    Die Try/Catch funktioniert aber nur wenn DISM garnicht ausgeführt wird. Ich habe dann gesucht und etwas gefunden, das dann den Fehler INNERHALB von dism anzeigt. Das tut es auch wenn man den code so wie unten im ISE laufen lässt. Er schreibt die "failed exit code" also scheint das zu funktionieren. was aber nicht funktioniert ist der code an sich. Der Fehler kommt immer und ich will aber dass er Restore health tatsächlich auch durchlaufen lässt. 

    Bitte euch um Hilfe. Komm einfach nicht auf die richtige Antwort.

    try {

    Start-Process -FilePath dism.exe -ArgumentList '/Online', '/Cleanup-Image', '/RestoreHealth' -Verb RunAs -WindowStyle Hidden
    if( $LASTEXITCODE -ne 0 ){
      # Handle the error here
      # For example, throw your own error
      Write-Warning "dism.exe failed with exit code ${LASTEXITCODE}"
      exit 1
      
    }}
    catch{ Write-Host $("Fehler aufgetreten:" + $_.Exception.GetType().FullName);
      exit 1

      }

    Donnerstag, 11. Februar 2021 13:07

Alle Antworten

  • Moin,

    für DISM gibt es native PowerShell-Cmdlets. Ansonsten, wenn Du catchen willst, musst Du einen Error schmeißen ;-)


    Evgenij Smirnov

    http://evgenij.smirnov.de

    Donnerstag, 11. Februar 2021 13:34
  • Da du einen Prozess startest, kannst du nur dessen Ende nur mit dem zurückgegebenen Process-Objekt prüfen.
    Ein Try/Catch funktioniert nicht Prozess übergreifend sondern nur in deinem Script.

    Ggf. kannst du ja auch die DISM Cmdlets verwenden:
    https://docs.microsoft.com/en-us/windows-hardware/manufacture/desktop/use-dism-in-windows-powershell-s14

    Donnerstag, 11. Februar 2021 13:38
  • Das Problem ist den Error schmeißt er mir nur, wenn dism garnicht startet. Wenn ich das I aus Dism entferne z.b.

    Aber innerhalb des programms, wenn der pfad nicht passt etc da schmeißt er mir dann keinen error. Haben wir mit datadog schon versucht. TryCatch funzt quasi nur wenn Dism nicht ausgeführt werden kann. Bei fehlern Innerhalb von dism krieg ich keine info

    Donnerstag, 11. Februar 2021 14:01
  • Das ist korrekt. Du kannst nicht überwachen, was der externe Prozess tut.
    Dafür schreibt DISM ja dann auch Logfiles, die es dann zu analysieren gilt.
    • Bearbeitet Der Suchende Donnerstag, 11. Februar 2021 14:43
    Donnerstag, 11. Februar 2021 14:43
  • Danke für die Hilfe dann muss ich wohl schauen dass ich irgendwie im Sctipt die passenden logs auch noch zieh. 
    Freitag, 12. Februar 2021 09:11