saschard
Goto Top

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):
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%
	)	
mit dem Parameter /D wird der Pfad in dem Batch-Skript gewählt. Auch das Error-Handling funktioniert einwandfrei.

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"  
			}
	}
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

Content-ID: 287017

Url: https://administrator.de/contentid/287017

Ausgedruckt am: 22.11.2024 um 06:11 Uhr

122990
Lösung 122990 29.10.2015 aktualisiert um 10:26:55 Uhr
Goto Top
Moin,
ich würde dem Befehl start-process mal das -WorkingDirectory mit auf den Weg geben face-wink 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 face-wink
Wenn dann
IF ERRORLEVEL 1 (
oder
IF %ERRORLEVEL% == 1 (
http://www.robvanderwoude.com/errorlevel.php
SaschaRD
SaschaRD 29.10.2015 um 10:30:06 Uhr
Goto Top
Hallo grexit,

danke für deinen Input. Mit dem Parameter -WorkingDirectory funktioniert es inklusive dem Error-Handling.
	function DeployEAR {
		$StartDeployEAR = Start-Process -FilePath $Path\eclipse\CLI.exe -ArgumentList "-deploy", "-PropertyFile update.properties" -Wait -NoNewWindow -PassThru -WorkingDirectory $Path\eclipse\  
			IF ($StartDeployEAR.ExitCode -eq 0){
				Output -Output "Deploy EAR was successful"  
			} ELSE {
				Output -Output "Failed to Deploy EAR"  
			}
	}
Fehlt ihm ein Parameter in der .properties Datei oder ist die Pfad Angabe nicht korrekt wird ein Fehler gemeldet.

P.S.:

Das Batch-Skript funktioniert wirklich so =)

Gruß, Sascha