2017-08-17 8 views
2

J'ai développé un script PowerShell qui installe Java Server JRE et enregistre les variables d'environnement. Cela fonctionne quand je l'exécute via PowerShell ISE mais échoue si j'essaie d'exécuter le PowerShell à distance. Je l'exécute à distance en attachant le script en tant que CSE à la machine virtuelle souhaitée via Azure Automation.Java Server JRE ne pas enregistrer via l'installation PowerShell à distance. Fonctionne avec PowerShell ISE

La partie étrange est que l'installation PowerShell à distance montre les variables d'environnement. Si j'ouvre l'interface utilisateur graphique des variables d'environnement/l'enregistre puis l'édite et la sauvegarde dans le bon chemin, elle commence à fonctionner (par exemple éditer et ajouter un \ bin et sauvegarder, éditer et supprimer \ bin et sauvegarder). Via l'exécution PowerShell ISE locale de mon script, je n'ai pas à faire cela, ça marche. Suis-je manquer une sorte d'étape d'enregistrement pour obtenir le Java Server JRE.

$solrPath = "C:\Solr" 
# Get Zip file containing Java Server JRE from CDN 
Invoke-WebRequest -Uri 'http://mycdn.com/Solr/Downloads/jdk1.8.0_144.zip' -OutFile C:\mydir\java.zip 
Write-Output "Java Server JRE Zip file downloaded from CDN" 

# Unzip Java Server JRE Directory 
Expand-Archive -Path C:\mydir\java.zip -DestinationPath $solrPath -Force 
Write-Output "Java Server JRE Zip file extracted" 

# Set Java Path and Home Environmental Variables 
# Add the PATH environment variable to point to the Java Directory Bin 
$oldpath = (Get-ItemProperty -Path ‘Registry::HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager\Environment’ -Name PATH).path 
$newpath = “$oldpath;$solrPath\jdk1.8.0_144\jre\bin” 
Set-ItemProperty -Path ‘Registry::HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager\Environment’ -Name PATH –Value $newpath 
$donepath = (Get-ItemProperty -Path ‘Registry::HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager\Environment’ -Name PATH).path 
Write-host "Validation; new value set to $donepath" 
+0

Votre session ISE est-elle exécutée en tant qu'administrateur? – TheIncorrigible1

+0

Oui c'est. Existe-t-il une méthode différente pour appeler mon script distant? J'utilise Azure Automation pour exécuter à distance, donc cela devrait fonctionner en tant qu'administrateur, correct? – Kode

+0

Créez-vous la session à distance avec les mêmes informations d'identification? Utilisez-vous 'PSSession' ou une autre méthode? – TheIncorrigible1

Répondre

0

Cela a fini par être un problème avec une autre partie de mon script. Une fois que j'ai corrigé cela, Java s'est correctement installé.