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?

In einer powershell-Eingabeaufforderung Folgendes ein: Get-Help-Group-Objekt -detail und Get-Help Sort-Object -detail. Dort beginnen.

InformationsquelleAutor NealWalters | 2014-06-20

Schreibe einen Kommentar