Powershell: Aufruf eines Java Programms (Error-Handling u. Pfadangabe)
Hallo zusammen,
eins der uralten Batch-Skripte wird aktuell durch Powershell abgelöst. Jedoch stehe ich dabei auch Mal wieder vor einem Problem, denn der Aufruf eines Java Programms funktioniert in Powershell nicht wie gewünscht.
Die Ursache dafür liegt, dass der Aufruf nicht in dem Verzeichnis stattfindet in dem das Java Programm liegt. Des Weiteren gibt es Probleme mit dem Error-Handling.
Hier ist der funktionierende Batch Code (Auszug):
mit dem Parameter /D wird der Pfad in dem Batch-Skript gewählt. Auch das Error-Handling funktioniert einwandfrei.
Umsetzung in Powershell:
Führe ich vor dem Aufruf des Start-Process ein Pfadwechsel durch cd, funktioniert es.
Lasse ich das cd weg, um zu überprüfen ob das Error-Handling funktioniert erhalte ich trotzdem immer die Meldung, dass die Ausführung erfolgreich war.
Danke und Gruß, Sascha
eins der uralten Batch-Skripte wird aktuell durch Powershell abgelöst. Jedoch stehe ich dabei auch Mal wieder vor einem Problem, denn der Aufruf eines Java Programms funktioniert in Powershell nicht wie gewünscht.
Die Ursache dafür liegt, dass der Aufruf nicht in dem Verzeichnis stattfindet in dem das Java Programm liegt. Des Weiteren gibt es Probleme mit dem Error-Handling.
Hier ist der funktionierende Batch Code (Auszug):
start /b /w /D %SDIR%\eclipse CLI.exe -deploy -PropertyFile update.properties
IF ERRORLEVEL = 1 (
echo %time%: Failed to Deploy EAR >> %LOGFILE%
REM & goto cancel
) ELSE (
echo %time%: Deploy EAR was successful>> %LOGFILE%
)
Umsetzung in Powershell:
function DeployEAR {
$StartDeployEAR = Start-Process -FilePath $Path\eclipse\CLI.exe -ArgumentList "-deploy", "-PropertyFile update.properties" -Wait -NoNewWindow -PassThru
IF ($StartDeployEAR.ExitCode -eq 0){
Output -Output "Failed to Deploy EAR"
} ELSE {
Output -Output "Deploy EAR was successful"
}
}
Lasse ich das cd weg, um zu überprüfen ob das Error-Handling funktioniert erhalte ich trotzdem immer die Meldung, dass die Ausführung erfolgreich war.
Danke und Gruß, Sascha
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 287017
Url: https://administrator.de/contentid/287017
Ausgedruckt am: 22.11.2024 um 06:11 Uhr
2 Kommentare
Neuester Kommentar
Moin,
ich würde dem Befehl start-process mal das -WorkingDirectory mit auf den Weg geben dann sollte er sich nicht mehr beschweren.
Zum Exit-Code, ich würde es mal mit einem nativen .NET Process versuchen.
Gruß grexit
p.s.
Wenn dann
oder
http://www.robvanderwoude.com/errorlevel.php
ich würde dem Befehl start-process mal das -WorkingDirectory mit auf den Weg geben dann sollte er sich nicht mehr beschweren.
Zum Exit-Code, ich würde es mal mit einem nativen .NET Process versuchen.
$proc = New-Object System.Diagnostics.Process
Gruß grexit
p.s.
IF ERRORLEVEL = 1 (
das das laufen soll grenzt an ein Wunder Wenn dann
IF ERRORLEVEL 1 (
oder
IF %ERRORLEVEL% == 1 (
http://www.robvanderwoude.com/errorlevel.php