2017-10-03 8 views
1

私は(謙虚な)スクリプトを開発して、powershellのTomcatオプションを編集しています。 サービスとしてインストールされていますが、これは管理者として実行中です(今のところ)。Powershellを使用してTomcatオプションを編集するにはどうすればよいですか?

私はいくつかのオプションでSet-ItemPropertyを実行するときに問題があると思います。

その後、サービスは開始されません。 Tomcat/binディレクトリに手を加えてtomcat6wを起動し、Javaタブで手作業で切り取り/貼り付けします。次にOKをクリックすると、サービスが応答します。

あなたは私が逃しているもののアイデアはありますか?私のスクリプトは大丈夫に見えるので、ものを挫折させる。

PS:フランス語を理解する必要はありませんが、必要に応じて質問してください。ここで

#Script de configuration des options Tomcat : 

Set-ExecutionPolicy Bypass 

#Variables : 
#nom du serveur : 
$servername=hostname 

#$memoirelibre=(Get-WmiObject -Class "Win32_OperatingSystem").freephysicalmemory*1024/1MB 
$pathtomcat = "HKLM:\SOFTWARE\Wow6432Node\Apache Software Foundation\Procrun 2.0\Tomcat6\*" 
$pathtomcatjava = "HKLM:\SOFTWARE\Wow6432Node\Apache Software Foundation\Procrun 2.0\Tomcat6\Parameters\Java" 
$pathtomcatstart = "HKLM:\SOFTWARE\Wow6432Node\Apache Software Foundation\Procrun 2.0\Tomcat6\Parameters\Start" 
$pathtomcatstop = "HKLM:\SOFTWARE\Wow6432Node\Apache Software Foundation\Procrun 2.0\Tomcat6\Parameters\Stop" 
$optionsTomcatJava = Get-ItemProperty -Path $pathtomcatjava -Name "Options" | Select-Object -ExpandProperty "Options" -ErrorAction Stop 
$runningtomcat = Get-Service | Where { $_.Status -eq "Running"} | findstr Tomcat6 
$lecteur = "D:" 
#$urlsetaclexe = "" 
[string] $oui = "oui" 
[string] $non = "non" 

#Variables pour les options Tomcat par défaut : 
$XmsValue=384 
$XmxValue=1024 
$MaxMetaspaceSizeValue=384 
$XssValue=256 
$esbport=1100 

#Renommage du service : 
Set-Service Tomcat6 -DisplayName "mycompany-Tomcat" 
    #echo "Le service Tomcat6 est renommé en mycompany-Tomcat." 

#Gestion des paramètres du service : 
Set-ItemProperty -Path $pathtomcatstart -Name "Class" -Value "org.apache.catalina.startup.Bootstrap" 
Set-ItemProperty -Path $pathtomcatstart -Name "WorkingPath" -Value "$lecteur\mycompany\Tomcat" 
Set-ItemProperty -Path $pathtomcatstart -Name "Arguments" -Value "start" 
Set-ItemProperty -Path $pathtomcatstart -Name "Mode" -Value "jvm" 

Set-ItemProperty -Path $pathtomcatstop -Name "Class" -Value "org.apache.catalina.startup.Bootstrap" 
Set-ItemProperty -Path $pathtomcatstop -Name "WorkingPath" -Value "$lecteur\mycompany\Tomcat" 
Set-ItemProperty -Path $pathtomcatstop -Name "Arguments" -Value "stop" 
Set-ItemProperty -Path $pathtomcatstop -Name "Mode" -Value "jvm" 

Set-ItemProperty -Path $pathtomcatjava -Name "Java Virtual Machine" -Value "$lecteur\mycompany\Java\jdk-8u45-windows-x64-security\jre\bin\server\jvm.dll" 
Set-ItemProperty -Path $pathtomcatjava -Name "Java Classpath" -Value "$lecteur\mycompany\Tomcat\bin\bootstrap.jar;$lecteur\mycompany\Tomcat\bin\tomcat-juli.jar" 
    #echo "Le service mycompany-Tomcat est configuré." 

#Récupération des options JAVA existantes/modifications 
#Si les options sont vides 
# alors : je les rajoute toutes en posant des questions 
#Sinon je demande de nouvelles valeurs 


if ($optionsTomcatJava -eq {}) 
{ 
#Questions pour les options : 

[int] $XmsValue = Read-Host "Quelle valeur pour l'option Xms (réponse en chiffres) ? Exemple : 384" 

[int] $XmxValue = Read-Host "Quelle valeur pour l'option Xmx (réponse en chiffres) ? Exemple 1024" 

[int] $MaxMetaspaceSizeValue = Read-Host "Quelle valeur pour l'option MaxMetaspace (réponse en chiffres) ? Exemple : 384" 

[int] $XssValue = Read-Host "Quelle valeur pour l'option Xss (réponse en chiffres) ? Exemple : 256" 

[int] $esbport = Read-Host "Quel numéro de port pour RMIFop ? (base 1100)" 

Set-ItemProperty -Path $pathtomcatjava -Name "Options" -Value "-Dcatalina.home=$lecteur\mycompany\Tomcat ` 
-Dcatalina.base=$lecteur\mycompany\Tomcat` 
-Djava.endorsed.dirs=$lecteur\mycompany\Tomcat\endorsed` 
-Djava.io.tmpdir=$lecteur\mycompany\Tomcat\temp` 
-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager` 
-Djava.util.logging.config.file=$lecteur\mycompany\Tomcat\conf\logging.properties` 
-Dorg.apache.camel.jmx.disabled=False` 
-Dorg.apache.camel.jmx.rmiConnector.registryPort=$esbport` 
-Dorg.apache.camel.jmx.createRmiConnector=True` 
-Dorg.apache.camel.jmx.mbeanObjectDomainName=mycompany.esb.camel` 
-Dsun.rmi.activation.execTimeout=1800000` 
-Xms$XmsValue`m` 
-Xmx$XmxValue`m` 
-Djava.awt.headless=true` 
-XX:MaxMetaspaceSize=$MaxMetaspaceSizeValue`m` 
-Xss$XssValue`k` 
-Dsolr.solr.home=$lecteur\mycompany\solr` 
-Dmycompany.licence.dir=$lecteur\mycompany\licences" -Force 
} 

#} 

else { 
    $questionXms = Read-Host -prompt "L'option Xmsvalue est à $XmsValue, faut il la modifier [o/n] ?" 
     if ($questionXms -eq "o") 
      { 
      [int] $XmsValue = Read-Host -prompt "Quelle valeur pour l'option Xms (réponse en chiffres) ? Exemple : 384" 
      } 

    $questionXmx = Read-Host -prompt "L'option Xmxvalue est à $XmxValue, faut il la modifier [o/n] ?" 
     if ( [string] $questionXmx -eq "o") 
      { 
      [int] $XmxValue = Read-Host -prompt "Quelle valeur pour l'option Xmx (réponse en chiffres) ? Exemple 1024" 
      } 

    $questionMaxmeta = Read-Host -prompt "L'option MaxMetaspaceSizeValue est à $MaxMetaspaceSizeValue, faut il la modifier [o/n] ?" 
     if ( [string] $questionMaxmeta -eq "o") 
      { 
      [int] $MaxMetaspaceSizeValue = Read-Host -prompt "Quelle valeur pour l'option MaxMetaspace (réponse en chiffres) ? Exemple : 384" 
      } 

    $questionXss = Read-Host -prompt "L'option Xssvalue est à $XssValue, faut il la modifier [o/n] ?" 
     if ( [string] $questionXss -eq "o") 
      { 
      [int] $XssValue = Read-Host -prompt "Quelle valeur pour l'option Xss (réponse en chiffres) ? Exemple : 256" 
      } 

    $questionesbport = Read-Host -prompt "L'option de port RMIFop est à $esbport, faut il la modifier [o/n] ?" 
     if ( [string] $questionesbport -eq "o") 
      { 
      [int] $esbport = Read-Host -prompt "Quel numéro de port ESB ? (base 1100)" 
      } 

    Set-ItemProperty -Path $pathtomcatjava -Name "Options" -Value "-Dcatalina.home=$lecteur\mycompany\Tomcat ` 
-Dcatalina.base=$lecteur\mycompany\Tomcat` 
-Djava.endorsed.dirs=$lecteur\mycompany\Tomcat\endorsed` 
-Djava.io.tmpdir=$lecteur\mycompany\Tomcat\temp` 
-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager` 
-Djava.util.logging.config.file=$lecteur\mycompany\Tomcat\conf\logging.properties` 
-Dorg.apache.camel.jmx.disabled=False` 
-Dorg.apache.camel.jmx.rmiConnector.registryPort=$esbport` 
-Dorg.apache.camel.jmx.createRmiConnector=True` 
-Dorg.apache.camel.jmx.mbeanObjectDomainName=mycompany.esb.camel` 
-Dsun.rmi.activation.execTimeout=1800000` 
-Xms$XmsValue`m` 
-Xmx$XmxValue`m` 
-Djava.awt.headless=true` 
-XX:MaxMetaspaceSize=$MaxMetaspaceSizeValue`m` 
-Xss$XssValue`k` 
-Dsolr.solr.home=$lecteur\mycompany\solr` 
-Dmycompany.licence.dir=$lecteur\mycompany\licences" -Force 

     } 





#(Re)démarrage du service : 
#Si le service Tomcat n'est pas en running, je le redémarre. 



    if ($runningtomcat -eq $false) 
      { 
      Write-Host "Le service mycompany-Tomcat n'est pas démarré. On le démarre." 
      get-service Tomcat6 | Start-Service -Verbose 
      } 

    else { 
      Write-Host "Le service mycompany-Tomcat n'est pas encore redémarré. On le redémarre." 
      get-service Tomcat6 | restart-Service -Verbose 

      } 

は誤りですが、私は取得しています:

**Restart-Service : Impossible de démarrer le service « mycompany-Tomcat (Tomcat6) ». 
Au caractère C:\Users\mycompany\Documents\scripteditiontomcat.ps1:159 : 35 
+    get-service Tomcat6 | Restart-Service -Verbose 
+         ~~~~~~~~~~~~~~~~~~~~~~~~ 
    + CategoryInfo   : OpenError: (System.ServiceProcess.ServiceController:ServiceController) [Restart-Service], ServiceCom 
    mandException 
    + FullyQualifiedErrorId : StartServiceFailed,Microsoft.PowerShell.Commands.RestartServiceCommand** 

別のリードは、Tomcatの設定ファイルを直接編集することができます。私はオプションの変数がどこにあるのかを特定する必要があります....

+1

おそらくあなたの問題ではありませんが、これは奇妙な選択のようです: '$ runningtomcat = Get-Service |どこで{$ _。ステータス - eq "実行中"} | findstr Tomcat6 'どうして' $ runningtomcat = Get-Service Tomcat6 |どこで{$ _。Status -eq "Running"} ' –

+0

実際、問題ではないが、あなたはポイントがある。 – ant

+0

'$ pathtomcat'の最後にある' * 'はそこにあるはずですか? –

答えて

0

レコードについては、テキストファイルに値を注入し、get-contentで戻すことで解決しました。

$tomcatproperties = Get-Content -Path "d:\mycompany\install\scripts\tomcat-properties.txt" 

echo $jvmopts >> "d:\artis\install\scripts\tomcat-properties.txt" 
Set-ItemProperty -Path $pathtomcatjava -Name "Options" -Value $tomcatproperties 

Etvoilà!

関連する問題