StefanWe 14 Geschrieben 28. März 2018 Melden Teilen Geschrieben 28. März 2018 Hallo, ich versuche reg Dateien zu importieren und das Ergebnis mit einem try catch abzufangen. Der Import funktioniert, allerdings lande ich immer im catch. Ich versuche es so: try { $files = Get-Childitem -Path "C:\temp\#Template Package\ImportRegFiles\*" -Include "*.reg" Foreach($regfile in $files) { reg import $($regfile.FullName) Write-Host "Erfolgreich" } } catch { Write-Host "fail" } Habe es auch schon statt reg import mit Start-Process -FilePath "regedit.exe" -ArgumentList "/S $($regfile.FullName)" -Wait -PassThru versucht, leider auch kein Erfolg. Habt ihr eine Idee, wie ich dies am besten abgefangen bekomme ? Zitieren Link zu diesem Kommentar
Dukel 454 Geschrieben 28. März 2018 Melden Teilen Geschrieben 28. März 2018 Mach mal das Try um das reg import. $files... foreach... try{ reg import }catch{...} Btw. statt $files kannst du das get-Childitem direkt ins Foreach nehmen. foreach($file in (Get-Childitem ...)){ Zitieren Link zu diesem Kommentar
StefanWe 14 Geschrieben 28. März 2018 Autor Melden Teilen Geschrieben 28. März 2018 $files = Get-Childitem -Path "C:\temp\#Template Package\ImportRegFiles\*" -Include "*.reg" Foreach($regfile in $files) { try { reg import $($regfile.FullName) Write-Host "Erfolgreich" } catch { Write-Host "fail" } } gleiches Ergebnis. Er import die reg Datei, gibt aber ein fail aus. Zitieren Link zu diesem Kommentar
testperson 1.677 Geschrieben 28. März 2018 Melden Teilen Geschrieben 28. März 2018 Hi, try - catch und dann ein Write-Host "Fail" ist irgendwie kurios. Gebe dann doch den abgefangen Fehler aus / zurück: catch { Write-Host $_.Exception.Message } Gruß Jan Zitieren Link zu diesem Kommentar
StefanWe 14 Geschrieben 28. März 2018 Autor Melden Teilen Geschrieben 28. März 2018 interessant - die Meldung lautet: PS C:\temp\#Template Package\ImportRegFiles> .\test.ps1 fail System.Management.Automation.RemoteException: Der Vorgang wurde erfolgreich beendet. fail System.Management.Automation.RemoteException: Der Vorgang wurde erfolgreich beendet. Zitieren Link zu diesem Kommentar
BOfH_666 577 Geschrieben 28. März 2018 Melden Teilen Geschrieben 28. März 2018 War es nicht so, dass man mit try/catch nur "richtige" Powershell Fehler eingefangen bekommt und keine Fehler von "externen" Programmen? Du könntest beim Start-Process die Standardausgabe und die Fehlerausgabe jeweils in eine Datei umleiten und diese dann auswerten. Oder Du benutzt den Exitcode falls reg.exe oder regedit.exe so etwas zurückliefern. $Ergebnis = (Start-Process -FilePath "reg.exe" -ArgumentList "IMPORT <reg-Datei>" -NoNewWindow -PassThru -Wait ).ExitCode Zitieren Link zu diesem Kommentar
StefanWe 14 Geschrieben 28. März 2018 Autor Melden Teilen Geschrieben 28. März 2018 vor einer Stunde schrieb BOfH_666: War es nicht so, dass man mit try/catch nur "richtige" Powershell Fehler eingefangen bekommt und keine Fehler von "externen" Programmen? Du könntest beim Start-Process die Standardausgabe und die Fehlerausgabe jeweils in eine Datei umleiten und diese dann auswerten. Oder Du benutzt den Exitcode falls reg.exe oder regedit.exe so etwas zurückliefern. $Ergebnis = (Start-Process -FilePath "reg.exe" -ArgumentList "IMPORT <reg-Datei>" -NoNewWindow -PassThru -Wait ).ExitCode ja so scheint es zu sein. Damit funktioniert es. Vielen Dank. Zitieren Link zu diesem Kommentar
BOfH_666 577 Geschrieben 28. März 2018 Melden Teilen Geschrieben 28. März 2018 Yeehaa ... cool. 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.