2017-01-12 2 views
0

Je souhaite exécuter un fichier jar à partir de powershell. Jusqu'à présent, j'ai été en mesure de trouver ceci:Exécution d'un fichier jar à partir de powershell

Start-Process -FilePath java -ArgumentList '-jar Upload_Download.jar FilePickupPath= $pickuppath FileDownloadPath= $download' -PassThru -RedirectStandardError E:\stderr.txt 

Comment cela ne fonctionne pas. Aucune suggestion?

+0

Qu'est-ce que cela signifie exactement? Rien ne se passe? De mauvaises choses arrivent? – vonPryz

Répondre

4

Powershell a plusieurs caractères de guillemets qui se comportent différemment. La double citation " permet des évaluations dans la chaîne alors que la citation simple ' ne le fait pas.

Comme un exemple pratique:

$foo=42 
write-host "The foo: $foo" 
# Prints The foo: 42 
write-host 'The foo: $foo' 
# Prints The foo: $foo 

La commande utilise les guillemets simples comme si, (backtick est utilisé pour diviser le code en écran format convivial)

Start-Process -FilePath java ` 
-ArgumentList '-jar Upload_Download.jar FilePickupPath= $pickuppath fileDownloadPath= $download' ` 
-PassThru -RedirectStandardError E:\stderr.txt 

Cela passera littéralement $pickuppath et $download. L'intention est susceptible de passer $pickuppath et $downloadvaleurs.

Pour résoudre le problème, utilisez des guillemets.

+0

qui a aidé merci! – Akki

0

Mon problème était un peu différent parce qu'il ya deux versions de JRE et un JDK installé et Powershell a toujours été ramassait exécutable java basé jre et à défaut avec le message

C:\Program Files\Java\jre1.8.0_73 is not a valid JDK Java Home. 

Bien que jdk a été installé et variable JAVA_HOME était set et out of variable affiche correctement le chemin jdk.

> $env:JAVA_HOME 
C:\Program Files\Java\jdk1.8.0_73 

Je stockaient le chemin exécutable java jdk dans une variable, naviguaient dans le répertoire contenant le fichier jar pour le serveur logique Web et invoqua le programme d'installation en utilisant le code suivant.

$java="C:\Program Files\Java\jdk1.8.0_73\bin\java" 
Start-Process -FilePath $java -ArgumentList '-jar fmw_12.2.1.3.0_infrastructure_generic.jar' 

Le programme d'installation s'ouvre après quelques secondes. J'ai omis le commutateur -RedirectStandardErro pour garder la commande petite et simple bien que je l'ai employé pour attraper n'importe quelle erreur en premier lieu.

J'ai essayé d'utiliser la variable $ fmw pour stocker le fichier jar fmw_12.2.1.3.0_infrastructure_generic.jar mais cela n'a pas fonctionné. le code est le suivant échoue

$fmw="fmw_12.2.1.3.0_infrastructure_generic.jar" 
Start-Process -FilePath $java -ArgumentList '-jar $fmw' 

J'espère que cela aiderait quelqu'un et quelqu'un pourrait me fournir une meilleure et propre méthode pour appeler les fichiers jar dans Powershell.