Zählen, Sortieren und Gruppieren nach in der Powershell
Gibt es irgendwelche coolen cmdlets, die mir helfen, tun Sie das folgende?
Ich will etwas in der Powershell, die ist so einfach zu tun, als die gleichen in SQL:
select RootElementName , count(*) from Table
group by RootElementName
order by RootElementName
Bin ich alle XML-Dateien in einem Verzeichnis, finden Sie das root-element jedes XML-Datei.
$DirectoryName = "d:\MyFolder\"
$AllFiles = Get-ChildItem $DirectoryName -Force
foreach ($Filename in $AllFiles)
{
$FQFilename = $DirectoryName + $Filename
[xml]$xmlDoc = Get-Content $FQFilename
$rootElementName = $xmlDoc.SelectSingleNode("/*").Name;
Write-Host $FQFilename $rootElementName
}
Gewünschte Ergebnis:
RootName Count
-------- -----
Root1 15
MyRoot 16
SomeRoot 24
Ich weiß, ich könnte, könnte entweder erstellen Sie zwei arrays oder ein array von Objekten, das speichern der root-Elemente in dem array, und das tun die zählt alle mit den typischen code, war nur in der Hoffnung, dass diese neue Sprache könnte etwas haben, built-in, die ich noch nicht entdeckt haben.
Konnte ich Pfeife das "Write-Host $FQFilename $rootElementName" zu etwas, das Verhalten würde sich etwas an der SQL, die ich von den oben genannten?
InformationsquelleAutor NealWalters | 2014-06-20
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ist dies eine Lösung.
Write-Host
nicht schreiben, die ein Objekt der pipeline, wir können Sortieren oder gruppieren.Write-Host
druckt nur text auf dem Bildschirm, um dem Benutzer zu zeigen, etwas, ex. ein Skript-Menü.Ich bin erstellen Sie ein Objekt mit einem FileName-Eigenschaft und die RootElementName so haben Sie es, wenn Sie brauchen, um abzurufen, der Dateiname+rootelement für eine Liste. Wenn nicht, könnten wir vereinfachen zu:
InformationsquelleAutor Frode F.