StefanWe 14 Geschrieben 28. März 2018 Melden 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
Dukel 460 Geschrieben 28. März 2018 Melden 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
StefanWe 14 Geschrieben 28. März 2018 Autor Melden 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
testperson 1.758 Geschrieben 28. März 2018 Melden 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
StefanWe 14 Geschrieben 28. März 2018 Autor Melden 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
BOfH_666 583 Geschrieben 28. März 2018 Melden 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
StefanWe 14 Geschrieben 28. März 2018 Autor Melden 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
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.