Hallo zusammen,
ich versuche mehrere XML-Dateien einzulesen und die Ausgabe für bestimmte Spalten Einträge in einer Datei auszugeben.
Hier ein Teil meines Scriptes:
$DebugPreference = "Continue" #Suche nach folgenden Mustern in der Dateibeschreibung $pattern2 = "QServer_64" $pattern3= "QDBODBC_64_" #Pfad des Logfile Ordners: $path = "..." #Suche Inhalt des Pfades $files = ls $path -recurse| Where-Object {$_.Extension -eq '.xml'} $files.gettype(); foreach ($file in $files) { #Abfrage der Muster If($file -match $pattern2) { write-host "Lese Datei $file" [xml] $xmldoc = Get-Content $file.FullName -encoding unknown $finalCSV_QServer += $xmldoc.document.root.logentries.logentry | Where {$_.logkind -like "Error" -or $_.logkind -like "Warning" -or $_.logkind -like "Caution" } } If($file -match $pattern3) { write-host "Lese Datei $file" [xml] $xmldoc2 = Get-Content $file.FullName -encoding unknown $finalQDBODBC += $xmldoc2.root.logentries.logentry | Where {$_.logkind -like "Error" -or $_.logkind -like "Warning" -or $_.logkind -like "Caution" } } } #Speichern der ausgabe in den gleichen Ordner im CSV Format: Write-host "Speichere $path\NEUQ-Server.csv" $finalCSV_QServer | Export-CSV "$path\NEUQ-Server.csv" -NoType -Delimiter ";" -Encoding UTF8 Write-host "Speichere $path\NEUQ-DBODBC.csv" $finalQDBODBC| Export-CSV "$path\NEUQ-DBODBC.csv" -NoType -Delimiter ";" -Encoding UTF8
Mein Script funktioniert für einen Teil der XML-Dateien. Für den anderen Teil bekomme ich folgende Fehlermeldung:
Der Wert "System.Object[]" kann nicht in den Typ "System.Xml.XmlDocument" konvertiert werden. Fehler: "Ungültige Daten auf Stammebene. Zeile 1, Position 1." Bei Zeile:31 Zeichen:22+ [xml] $xmldoc <<<< = Get-Content $file.FullName -encoding unknown+ CategoryInfo : MetadataError: (:) [], ArgumentTransformationMetadataException+ FullyQualifiedErrorId : RuntimeException
Die Struktur der XML-Dateien ist bei allen gleich:
<root><logentries xmlns="log"><logentry><index></index> <starttime></starttime><pid></pid> <threadname></threadname><threadid></threadid> <logicalname></logicalname><error></error> <logkind></logkind></logentry></logentries></root>
Aktuell verstehe ich nicht wieso es hier zu einer Fehlermeldung kommt und wie ich diese bereinigen kann.
Kann mir jemand weiterhelfen bei dem Thema?