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 ?
Dukel 468 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 ...)){
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.
testperson 1.858 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
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.
BOfH_666 586 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
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.
Empfohlene Beiträge
Erstelle ein Benutzerkonto oder melde dich an, um zu kommentieren
Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können
Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!
Neues Benutzerkonto erstellenAnmelden
Du hast bereits ein Benutzerkonto? Melde dich hier an.
Jetzt anmelden