Jump to content
DuDo

Aktualisierung vorhandener *.config-Datei

Recommended Posts

Hallo Zusammen,

als absoluter Neueinsteiger in das Thema Powershell, habe ich eine schwierige Aufgabe erhalten.
Ich benötige ein Powershell-Skript, mit folgendem Inhalt: 
 

1.) Stop Windows-Service "Dienst123"

2.) Search the computer for the Java Runtime directory path without the final "\ bin \ java.exe" of the ORACLE_HOME directory - (bei mehreren Oracle Versionen, die neueste Version nehmen)

3.) The determined directory path e.g. "C:\app\oracle\product\12.1.0\dbhome_1\jdk\jre\" into existing "configfile.config"
    overwrite the value "JAVAPFAD" replace and save.

4.) Start Windows-Service "Dienst123"

5.) Messagebox/Info Success or Failed.

6.) Path for the config.config: "C:\Program Files\CONFIG\config.config"

 

Wie kann das am besten umsetzen? Kann mir jemand Hilfestellung geben?

Für eure Unterstützung vielen Dank!


VG DuDo

Share this post


Link to post
Share on other sites

Vielen Dank für die schnellen Antworten!

Ich habe beim zweiten Punkt ein Problem, die anderen müsste ich noch testen, ob das so funktioniert.
Könnt Ihr ggf. mal drüber sehen? Danke :)

 

# Dienst stoppen
Stop-Service -Name "Dienst123"

# Java-Verzeichnis des ORACLE_HOME Verzeichnis herausfinden
Get-ChildItem -Path .\app\oracle\* -Include *java* # Hier komm ich schon nicht weiter!? 

# Ermittelten Wert in der *.config Datei ersetzen
Get-Content -Path C:\Program Files\CONFIG\config |
    ForEach-Object {$_ -Replace 'JAVAPFAD', 'Ermittelter Wert wie eintragen!?'} |
        Set-Content -Path C:\Program Files\CONFIG\config

# Dienst starten
Start-Service -Name "Dienst123"

# Messagebox/Information
Write-Host "Ihre Änderungen wurden durchgeführt!"

 

Share this post


Link to post
Share on other sites

Für Deinen 2. Schritt müsste der aktuelle Pfad auf das Oracle-Stamm-Verzeichnis eingestellt sein, damit es so funktioniert. Ich würde empfehlen, den absoluten Pfad zu benutzen ... also statt ".\app\oracle\*", eher "C:\Program Files\Oracle\Whatever\app\oracle\*". Was passiert denn, wenn Du den Befehl so ausführst, wie er ist?

Share this post


Link to post
Share on other sites

Sí Señor. ;-)  ... doppelt hält besser ... erst hat er's / sie's offenbar eilig und jetzt reagiert er / sie nicht mal mehr ... schade ...

Edited by BOfH_666

Share this post


Link to post
Share on other sites

Sorry Zusammen^^ Hatte viel um die Ohren und war mit der Lösung des Problems beschäftigt.

 

Ihr hattet Recht - Ich habe mir zwischenzeitlich einiges an Tutorials reingezogen und viel ausprobiert.

Habe es lösen können - jedoch über einen anderen Weg:

# Windows-Dienst "Dienst 123" stoppen
Stop-Service -Name Dienst123

# Oracle Home-Verzeichnis aus der Oracle-Inventory-XML einlesen
$oraclehome = [xml](get-content 'C:\Program Files\Oracle\Inventory\ContentsXML\inventory.xml') # Der Pfad zeigt nur auf das \dbhome\ Verzeichnis - darin liegt aber das /jdk/jre!

# Java-Pfad überarbeiten und in config.config schreiben
$config = [xml](get-content 'C:\Program Files\CONFIG\config.config')
$config.configuration.systemsettings.setting.key.value[14].loc = ($oraclehome.inventory.home_list.home.loc[0]+"/jdk/jre")
$config.Save('C:\Program Files\CONFIG\config.config')

# Windows-Dienst "Dienst123" starten
Start-Service -Name Dienst123 

Was haltet ihr davon?

VG DuDo

Share this post


Link to post
Share on other sites

Großartig. Ein bissl zu extensiv dokumentiert für meinen Geschmack, aber wenn es den Job erledigt - cool. :thumb1:

 

Jeder, der auch nur ansatzweise English versteht, kann sich denken, dass ein Befehl wie Start-Service, einen Service startet - für alle Powersheller ist das sowieso logisch. Das muss also nicht dokumentiert werden und bläht den Code nur unnötig auf.  ;-)  Kommentare sind dort nützlich, wo sie etwas Nicht-Offensichtliches erklären.

Edited by BOfH_666

Share this post


Link to post
Share on other sites
# Hallo Welt ausgeben
Write-Host "Hallo Welt"

SCNR :-):-)

 

BTT: Ist value[14] und loc[0} sicher? Ich finde es immer kritisch, in Arrays über die Indizes zu arbeiten.

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


×
×
  • Create New...