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, 382 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
Windows Server
Erneutes Release von WS2019 und Win10 v1809
Tipp von IT-Pro vor 21 StundenWindows Server3 Kommentare

Hi, nachdem der Windows Server 2019 und Windows 10 in der Version 1809 aufgrund von verschwinden von Dateien nach ...

CPU, RAM, Mainboards
Spectre Update Tool für ältere PCs
Information von sabines vor 1 TagCPU, RAM, Mainboards6 Kommentare

Mit Hilfe eines Tools wird der betreffende PC permanent von einem USB Stick gestartet, der ein passendes Microcode Update ...

Windows 10
Windows 10 Oktober 2018 Update: Es ist wieder da
Tipp von Bowsette vor 1 TagWindows 101 Kommentar

Ein neuer Versuch von Microsoft das Windows 10 Oktober 2018 Update, auch bekannt als 1809, an den Mann zu ...

Windows Server

Windows Server 2016: Achtung - ab heute gibt es wieder Express Updates

Information von kgborn vor 1 TagWindows Server1 Kommentar

Kurze Info für Administratoren, die Windows Server 2016 per WSUS/SCCM mit Updates betanken. Ab heute gibt es für Windows ...

Heiß diskutierte Inhalte
Windows Server
Windows Server 2016 Lizenzierung - 7 Hyper V VMs
Frage von staybbWindows Server18 Kommentare

Hallo zusammen, wir haben zwei HP Server gekauft mit jeweils pro Server 2 CPUs à 10 Cores. Also insgesamt ...

Batch & Shell
Ordnernamen mit String aus Ziffern-Zahlenkombination erstellen
Frage von MmarKussBatch & Shell16 Kommentare

Hallo zusammen, ich habe ein etwas komplexeres Problem, welches ich selbst mittels einer Batch-Datei lösen will / muss, da ...

Windows Server
Lohnt sich eine Domäne für uns?
Frage von BowsetteWindows Server12 Kommentare

Hallo, ich arbeite in einem kleinen Unternehmen mit mehr als 5 und weniger als 10 Mitarbeitern, also Small Business ...

Windows Server
AD Password Reminder Mail
Frage von TeutoneWindows Server10 Kommentare

Hallo liebe Leute, ich habe vor langer Zeit einmal ein Password Reminder Mail Script erstellt, welches nun nicht mehr ...