Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

gelöst Mit Powershell aus .txt bestimmten Wert auslesen und herabsetzen

Mitglied: FISIStew

FISIStew (Level 1) - Jetzt verbinden

14.02.2018 um 13:23 Uhr, 222 Aufrufe, 9 Kommentare

Hallo zusammen,

ich möchte ein PS Script entwerfen mit dem ich bestimmte Dienste von verschiedenen Servern stoppe, aus einer .txt einen bestimmten Wert auslese und diesen mit einem Wert von -1 dann in einem Array speichere und danach an ein SQL Statement übergebe.
Folgendes habe ich bisher geschafft, bleibe aber am auslesen der .txt hängen.

POWERSHELL
#Service auf dem Server 02 stoppen, 15 Sekunden warten und den Status zurück geben
Set-Service -Name Dienst -ComputerName Server1 -Status Stopped
Start-Sleep -Seconds 15
Get-Service -ComputerName Server1 | Where-Object{$_.Name -like "Dienst"} | %{$_.Status}


#Service auf dem Server 01 stoppen, 15 Sekunden warten und den Status zurück geben
Set-Service -Name Dienst -ComputerName Server2 -Status Stopped
Start-Sleep -Seconds 15
Get-Service -ComputerName Server2 | Where-Object{$_.Name -like "Dienst"} | %{$_.Status}


#Service auf dem Server DB stoppen, 15 Sekunden warten und den Status zurück geben
Set-Service -Name Dienst -ComputerName Server3 -Status Stopped
Start-Sleep -Seconds 15
Get-Service -ComputerName Server3 | Where-Object{$_.Name -like "Dienst"} | %{$_.Status}


#Kopieren der EngineConfiguration.config und als test.txt in TEMP speichern
Copy-Item "C:\Program Files\Pfad\EngineConfiguration.config" C:\temp\test.txt



Bis hierher würde alles funktionieren!
Ich möchte allerdings den Wert auslesen, der hinter dem
deleteHistoricalCalculationsOlderThanDays steht, also die 7 wie in dem Auszug der .txt zu sehen und diesen Wert in ein Array schreiben.

TEXTFILE
<?xml version="1.0" encoding="utf-8"?>

<engineConfiguration>
<executor batchSize="50"
loggingLevel="1"
queueModifiedEachCycle="true"
queueAllPeriodically="true"
queuePeriodicallyAt="4"
queuePeriodicallyWeekDays="Sunday"
requeueFailures="false"
deleteHistoricalCalculationsOlderThanDays="7"
extendValidityPeriods="false"
skipQueuingUnresolved="true"
allowedRemoteIPMask="::1,127.0.0.1,172.16.7.29">


Wie kann ich das realisieren?
Da dieser Wert nicht immer zwingend in der selben Zeile steht oder auch der Wert zwischen 1-31 liegen kann benötige ich etwas Hilfe.

Hat hierzu jemand eine Idee?
Vielen Dank im voraus
Mitglied: 135333
14.02.2018, aktualisiert um 14:28 Uhr
Ich möchte allerdings den Wert auslesen, der hinter dem
deleteHistoricalCalculationsOlderThanDays steht, also die 7 wie in dem Auszug der .txt zu sehen und diesen Wert in ein Array schreiben.
Das ist ein XML File, das lässt sich problemlos via XML Object auslesen
01.
$werte = @() 
02.
$werte += ([xml](gc "C:\Program Files\Pfad\EngineConfiguration.config")).engineConfiguration.deleteHistoricalCalculationsOlderThanDays
Gruß Snap
Bitte warten ..
Mitglied: FISIStew
14.02.2018 um 14:39 Uhr
Hey,
erstmal vielen Dank für Deine Antwort!
Allerdings wenn ich den Wert mit write-host $werte ausgeben möchte um zu sehen was er ausgelesen hat, dann hat er nichts ausgelesen
auch das umleiten in eine Textfile bleibt diese leer!
Bitte warten ..
Mitglied: 135333
LÖSUNG 14.02.2018, aktualisiert um 15:27 Uhr
Geht hier einwandfrei, leider postest du nicht den kompletten Inhalt der XML Datei, das ist wichtig um den Baum der Eigenschaften zu kennen.
Von mir aus kannst du es auch mit Regular Expressions extrahieren, das geht ebenfalls
01.
$werte  = @() 
02.
$werte += [regex]::match((gc "C:\Program Files\Pfad\EngineConfiguration.config" -raw), 'deleteHistoricalCalculationsOlderThanDays="(\d+)"').Groups[1].Value
p.s. ich gehe hier bei beiden Skripten von einer aktuellen Powershell >= 3.0 aus!
Bitte warten ..
Mitglied: FISIStew
14.02.2018 um 15:37 Uhr
Super, damit hat es funktioniert, ich bekomme den Wert 7 zurück!
Vielen Dank erstmal
Bitte warten ..
Mitglied: FISIStew
15.02.2018 um 08:26 Uhr
Eine Frage habe ich noch, falls Du mir da auch helfen kannst
Wie kann ich nun den Wert den ich ausgelesen habe und mit

$werte -= 1

bearbeitet wurde, nun in die .config Datei zurückschreiben und diese speichern?

VG
Bitte warten ..
Mitglied: 135333
LÖSUNG 15.02.2018, aktualisiert um 08:39 Uhr
Ich würde dir zwar dringend empfehlen es über die XML Methode zu machen, da du aber anscheinend nicht bereit bist die XML hier im Ganzen zu Posten hier die Replace-Variante.
01.
$path = "C:\Program Files\Pfad\EngineConfiguration.config" 
02.
[regex]::replace((gc $path -raw), 'deleteHistoricalCalculationsOlderThanDays="(\d+)"',{param($m) "deleteHistoricalCalculationsOlderThanDays=`"$([int]$m.Groups[1].Value -1)`""}) | SC $path
p.s. Wenn du noch eine veraltete PS2.0 nutzt dringend updaten, denn die hat viele Bugs und Unzulänglichkeiten.
Bitte warten ..
Mitglied: FISIStew
15.02.2018 um 08:50 Uhr
Guten Morgen,
ich verstehe was Du meinst mit der XML Methode zu lösen, allerdings kann ich Dir aktuell nicht sagen woran es liegt.
Meine PS ist auf dem aktuellsten Stand, allerdings kann ich nur ausschnitte von der XML zeigen, da ich sonst zu viel ändern müsste! Sorry

Vielen Dank für Deine schnelle Antwort und es würde auch funktionieren, allerdings würde ich gerne den Wert aus der $werte übernehmen und nicht einfach nur -1 , Hintergrund ist, das das Script abbricht wenn der Wert aus der config

if ($werte -le 7)

ist.

VG
Bitte warten ..
Mitglied: 135333
15.02.2018, aktualisiert um 09:44 Uhr
Zitat von FISIStew:
Vielen Dank für Deine schnelle Antwort und es würde auch funktionieren, allerdings würde ich gerne den Wert aus der $werte übernehmen und nicht einfach nur -1
Das macht das Skript aber, der Wert wird der XML direkt entnommen und sofort um eins reduziert . If Abfragen kannst du im MatchEvaluator des 3 Parameters von der Replace-Funktion einfügen.
Einfach mal etwas einlesen wäre mal angebracht, dann musst du nicht jeden Furz erfragen.
https://msdn.microsoft.com/de-de/library/ht1sxswy(v=vs.110).aspx
Bitte warten ..
Mitglied: FISIStew
15.02.2018 um 09:44 Uhr
Vielen Dank!
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
Werte aus CSV in TXT - Powershell
gelöst Frage von Komoran12Batch & Shell20 Kommentare

Hallo Ihr, ich benötige mal wieder Eure Hilfe,kann mir wer mit einem Code aushelfen? Ich habe eine .csv mit ...

PHP

Wert aus txt auslesen und in ein bestimmtes feld setzen

Frage von Dr.BytePHP2 Kommentare

Hallo, ich benutze folgenden Text um bei einem bestimmten Wert einen bestimmten Begriff in ein bestimmtes Feld zu setzen: ...

Entwicklung

Powershell: Werte aus Array gezielt auslesen

gelöst Frage von SunnyRainyDayEntwicklung3 Kommentare

Hallo, Stehe ein wenig auf´m Schlauch. Ich möchte aus einem Array nur den Wert eines Feldes auslesen. Also z.b. ...

Batch & Shell

Powershell: Wert aus Registry auslesen und mit vorhandenem Wert vergleichen

gelöst Frage von BrowserlauserBatch & Shell5 Kommentare

Hallo, ich stehe vor folgendem Problem: Ich möchte per Powershell aus der Registry einen bestimmten Wert auslesen. Beispiel: in ...

Neue Wissensbeiträge
SAN, NAS, DAS
QNAP NAS Datenschutz-Loop nach Firmware-Update
Tipp von vanTast vor 9 StundenSAN, NAS, DAS1 Kommentar

Moin, im allgemeinen Trend seine geänderten Datenschutzbedingungen den Kunden zukommen zu lassen kam die Firma QNAP auf die glorreiche ...

Datenschutz
DSGVO Datenschutzgesetz
Anleitung von 1Werner1 vor 10 StundenDatenschutz4 Kommentare

Moin, ja was ist das, da ist die DSGVO Datenschutzverordnung. Wie das Gesetz gibt es schon 2 Jahre? Nun ...

CPU, RAM, Mainboards
Neverending story
Tipp von keine-ahnung vor 1 TagCPU, RAM, Mainboards1 Kommentar

Da kommt man mit dem fixen gar nicht mehr hinterher und die CPU erreichen wieder Rechenleistungen im Bereich des ...

Multimedia & Zubehör
AVM Fritz USB WLAN Sticks schneller einschalten
Tipp von NetzwerkDude vor 3 TagenMultimedia & Zubehör4 Kommentare

Die AVM Fritz WLAN Sticks haben in der Firmware 2 Modis: Einmal als Massenspeicher und einmal als WLAN Netzwerkkarte ...

Heiß diskutierte Inhalte
PHP
Nach Umzug zu 1und1 bekomme ich beim Eintrag in die DB Tabelle folgenden Fehler
gelöst Frage von jensgebkenPHP35 Kommentare

INSERT command denied to user 'dbo45342345342231244'@'112.127.102.073' for table 'orders'

LAN, WAN, Wireless
Powerline über zwei Stockwerke optimieren
gelöst Frage von DultusLAN, WAN, Wireless33 Kommentare

Guten Morgen liebes Forum, ich hätte einmal eine Frage bezüglich Powerline Adapter: Mein Problem ist seit gestern präsent, da ...

Windows Userverwaltung
Problem mit Benutzerprofil
Frage von lieferscheinWindows Userverwaltung24 Kommentare

Guten Tag liebe Community, folgendes Problem habe ich: User meldet sich auf Client A an - sein Homelaufwerk verbindet. ...

Off Topic
DISKUSSION: Was bringt der Disclaimer "Wenn Sie nicht der Empfänger sind."
Frage von N8DragonOff Topic21 Kommentare

So oder ähnlich, lese ich immer wieder Kleingedrucktes am Ende diverser Mails. Letzten Endes wollen sie mir alle sagen, ...