Ich versuche, ein Skript, das eine XML-Datei, sucht nach einer übereinstimmenden Bedingung, wenn es findet, fügt eine neue Zeile von Sternchen, dann wenn Sie durch die Datei gehen, um es von allen seinen XML-Tags strip und verlassen die Daten in einer Nur-Text-Datei.Wie kann ich dieses PowerShell-Skript effizienter machen?
Das Skript wurde auf eine kleine Eingabe-XML-Datei getestet und funktioniert gut, aber wenn ich eine große XML-Datei zu übergeben es dauert ewig (nicht wirklich sicher, wie lange ich es für über eine Stunde lief und immer noch kein Ergebnis Ich habe es gerade gestoppt).
Ich schätze, ich muss die Arbeit in einer äußerst ineffizienten Art und Weise durchführen, in der Hoffnung, dass Sie mir helfen können, es schnell und effizient zu machen. Hier
ist das Skript unter:
# Takes input XML File, cleans up XML elements, outputs plain text file
$FileName = "C:\Users\someguy\Desktop\input.xml"
$Pattern = "ProcessSpecifier = ""true"""
$FileOriginal = Get-Content $FileName
[String[]] $FileModified = @()
Foreach ($Line in $FileOriginal)
{
$FileModified += $Line
if ($Line -match $Pattern)
{
#Add Lines after the selected pattern
$FileModified += "*************isActive=true*****************"
}
}
$FileModified -replace "<[^>]+>", "" | Out-File C:\Users\someguy\Desktop\Output.txt
'+ = $ Line' erstellt jedes Mal ein neues Array, wenn Sie es aufrufen. versuchen Sie ArrayList. –
Auf welche Version von PowerShell zielen Sie? –
Können Sie eine grobe Schätzung der Größe der Dateien geben, über die wir sprechen? – whatever