DuDo 0 Geschrieben 6. Juni 2019 Melden Teilen Geschrieben 6. Juni 2019 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 Zitieren Link zu diesem Kommentar
Dukel 454 Geschrieben 6. Juni 2019 Melden Teilen Geschrieben 6. Juni 2019 Teil das (wie du schon gemacht hast) ganze in mehrere schritte auf und bearbeite einen nach dem anderen und führe das dann zusammen. Für Dienste starten und stoppen gibt es: https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.management/get-service?view=powershell-6 https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.management/start-service?view=powershell-6 https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.management/stop-service?view=powershell-6 Für Dateien suchen https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.management/get-childitem?view=powershell-6 https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.management/get-item?view=powershell-6 Für Dateien bearbeiten https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.management/add-content?view=powershell-6 https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.management/set-content?view=powershell-6 https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.management/get-content?view=powershell-6 Die Info machst du am besten als einfachen Text: https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.utility/write-host?view=powershell-6 Zitieren Link zu diesem Kommentar
BOfH_666 577 Geschrieben 6. Juni 2019 Melden Teilen Geschrieben 6. Juni 2019 ... und es kann auch nicht schaden, sich die Grundlagen von Powershell einmal einigermaßen strukturiert draufzuschaffen ... es gibt zahlreiche Tutorials im Netz, gute Bücher oder (im Moment noch) den kostenlosen Video-Kurs in der Microsoft Virtual Academy - Getting Started with Powershell. Zitieren Link zu diesem Kommentar
DuDo 0 Geschrieben 6. Juni 2019 Autor Melden Teilen Geschrieben 6. Juni 2019 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!" Zitieren Link zu diesem Kommentar
BOfH_666 577 Geschrieben 6. Juni 2019 Melden Teilen Geschrieben 6. Juni 2019 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? Zitieren Link zu diesem Kommentar
daabm 1.355 Geschrieben 7. Juni 2019 Melden Teilen Geschrieben 7. Juni 2019 Hab ich das nicht heute im Technet auch schon gesehen?!? Zitieren Link zu diesem Kommentar
BOfH_666 577 Geschrieben 7. Juni 2019 Melden Teilen Geschrieben 7. Juni 2019 (bearbeitet) Sí Señor. ... doppelt hält besser ... erst hat er's / sie's offenbar eilig und jetzt reagiert er / sie nicht mal mehr ... schade ... bearbeitet 7. Juni 2019 von BOfH_666 Zitieren Link zu diesem Kommentar
Beste Lösung DuDo 0 Geschrieben 7. Juni 2019 Autor Beste Lösung Melden Teilen Geschrieben 7. Juni 2019 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 Zitieren Link zu diesem Kommentar
BOfH_666 577 Geschrieben 7. Juni 2019 Melden Teilen Geschrieben 7. Juni 2019 (bearbeitet) Großartig. Ein bissl zu extensiv dokumentiert für meinen Geschmack, aber wenn es den Job erledigt - cool. 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. bearbeitet 7. Juni 2019 von BOfH_666 Zitieren Link zu diesem Kommentar
daabm 1.355 Geschrieben 8. Juni 2019 Melden Teilen Geschrieben 8. Juni 2019 # 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. Zitieren Link zu diesem Kommentar
Empfohlene Beiträge
Schreibe einen Kommentar
Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.