ich eine Netzwerkfreigabe mit 20.000 XML-Dateien im Format habenFiltering-Dateien durch einen Teil des Namens Spiel
username-computername.xml
Es gibt doppelte Einträge in Form von (wenn ein Benutzer einen neuen comptuer erhalten)
user1 -computer1.xml
benutzer1-computer2.xml
oder
BLRPPR-SKB52084.xml
BLRSIA-SKB50871.xml
S028DS-SKB51334.xml
s028ds-SKB52424.xml
S02FL6-SKB51644.xml
S02FL6-SKB52197.xml
S02VUD-SKB52083.xml
Da im manipulieren gehen die XMLs später kann ich Eigenschaften des Arrays nicht einfach abweisen, da ich zumindest den vollständigen Pfad brauche. Ziel ist es, wenn ein Duplikat gefunden wird, dasjenige mit dem neueren Zeitstempel zu verwenden. Hier
ist ein snipet des Codes, wo ich diese Logik benötigen
$xmlfiles = Get-ChildItem "network share"
Hier bin ich nur ein foreach
Schleife tun:
foreach ($xmlfile in $xmlfiles) {
[xml]$xmlcontent = Get-Content -Path $xmlfile.FullName -Encoding UTF8
Select-Xml -Xml $xmlcontent -Xpath " "
# create [pscustomobject] etc...
}
Wesentlichen, was ich brauche, ist
if ($xmlfiles.Name.Split("-")[0]) - duplicate) {
# select the one with higher $xmlfiles.LastWriteTime and store either
# the full object or the $xmlfiles.FullName
}
Idealerweise sollte das Teil der foreach
Schleife nicht zu sein müssen zweimal durchlaufen.
tödlich. Danke einer Mühle Ansgar. genau das was ich gesucht habe. Alles andere, was ich versuchte, verlor ich die ursprünglichen Objekteigenschaften. während ich sollte nur mit einer Gruppe + Sortierung Combo nach Ihrem Beispiel gegangen. bereits in meinem Code implementiert und funktioniert genauso perfekt wie geplant. Danke noch einmal! –
nur der Vollständigkeit halber, die vorgeschlagene Sortierung | wählen Ansatz, auch wenn seine eine zusätzliche Schleife, kommt nicht mit einer großen Zeitstrafe VERBOSE: Gesamt XMLFiles 17086 VERBOSE: get-Inhalt Lauf in 3,1642018 VERBOSE: gefiltert XMLFiles nach dem Entfernen von Duplikaten 13908 VERBOSE: Filterung nahm 23.7152372 Sekunden –