XML Dateien suchen und verändern

Posted on: 20. Juni 2018
Heute suchen wir in einem Ordner nach XML Dateien. Danach lesen wir den Inhalt der Dateien aus und verändern einzelne Attribute der XML-Elemente und speichern die Dateien später wieder ab.

Danke für den Vorschlag eines Zuschauers für das Tutorial.
Hier der Code aus dem Youtube-Video. Die Vorgehensweise und Bemerkungen findest du direkt als Kommentare (#Grün) im Code. So wird er dir ebenfalls in der PowerSHELL ISE angezeigt werden.
——————————————–
# Ausgangspfad der Datei-Suche            
$quellpfad = "C:\Test\GenerierteDokumente"            
            
# Alle Dateien mit der Endung *.xml Rekursiv in ein Array schreiben            
$allexml = Get-ChildItem $quellpfad "*.xml" -Recurse            
            
# Array für Standorte Anlegen            
$standorte = @()            
            
# Alle Standorte aller XML-Elemente in das Array $Standorte schreiben            
foreach ($xmlobjekt in $allexml)            
    {            
            
    # Holen des Inhalts der XML Datei            
    [xml]$xml = Get-Content $xmlobjekt.FullName            
            
    # Abrufen der Standortinformationen aus den Server-Elementen und an Array anhängen            
    $standorte += (Select-Xml -Xml $xml -XPath '//Server').Node.Informationen.Standort            
                
    }            
            
# Ausgabe des Arrays Gruppiert nach den Werten            
$standorte.GetEnumerator() | Group-Object            
            
# Inhalte der XML-Elemente mit XPath suchen und ersetzen            
foreach ($xmlobjekt in $allexml)            
    {            
            
        # Inhalt der XML-Date in $xml laden            
        [xml]$xml = Get-Content $xmlobjekt.FullName            
            
        # Für jedes Element in der XML Datei unter 'Server' durchlaufen            
        foreach ($server in (Select-Xml -Xml $xml -XPath '//Server'))            
            {            
            
                # Falls der Standort Lugano ist             
                if ($server.Node.Informationen.Standort -like "Lugano")            
                    {            
            
                        # Standort neu setzen auf Paris            
                        $server.Node.Informationen.Standort = "Paris"            
                                
                    }            
            
                # Speichern der XML Datei am ursprünglichen Ort            
                $xml.Save($xmlobjekt.FullName)            
            
            }            
            
    }            
            
# Direkt Dateien nach Text durchsuchen und ersetzen            
foreach ($datei in $allexml)            
    {            
            
        # Kompletten Inhalt der Datei in Variabel laden             
        $text = Get-Content $datei.FullName            
            
        # Variabel neu schreiben und Freiburg durch Hamburg ersetzen            
        $text = $text.Replace("Freiburg","Hamburg")            
            
        # Schreiben des Inhaltes von $Text in die ursprüngliche Datei            
        Set-Content $datei.FullName $text            
    }
——————————————–
Solltest du irgendwelche Fragen haben, dann kannst du diese gerne entweder hier im Blog oder direkt unter dem YouTube Video stellen. Ich gebe alles, deine Fragen zeitnahe zu beantworten oder ein entsprechendes Video darüber zu machen.
Gerade die Grundlagen-Videos werde ich nicht mit viel Text ausschmücken. Bei mir ist jeweils jede Code-Zeile direkt im Code Kommentiert (#Grün). Du kannst den Code direkt mit in dein Script kopieren und hast so eine gute Orientierungshilfe, sobald du die Scripts auf deine Bedürfnisse anpasst.

Ich erstelle und veröffentliche sämtliche Videos kostenlos und blende auch keine Werbung ein, dies will ich auch so beibehalten. Da das vermittelte Wissen aber in teuren Kursen erlangt werden kann, ist eine kleine Spende hin und wieder sicher keine schlechte Gegenleistung.