Sortierung mit PnP

Mit PnP ist es einfach eine ganze SharePoint Liste abzufragen und mit den Daten aus der Liste über PowerShell weiterzuarbeiten. Komplizierter wird es Ergebnisse aus einer PnP-Abfrage zu sortieren.

Werden über PnP Daten aus einer SharePoint Liste abgefragt gibt PnP die Daten als unsortierte Hash Table zurück. Leider lässt sich die Tabelle nicht so einfach sortieren, zum Beispiel falls jemand eine sortierte Reihenfolge nach Datum möchte.

Unsortierte Listeneinträge

Warum die Daten nicht vor dem Abruf sortieren, quasi für PnP vorsortiert? Hier helfen CAML Queries. Nicht unbedingt bequem diese vorzubereiten, mit ein wenig Hilfe und Übung geht es. PnP kann CAML Queries verwenden um Daten abzurufen. Dadurch lässt sich in der Query die Sortierung vordefinieren, ähnlich zu einer Listenansicht.

Tricks wie es mit einer CAML-Query einfacher wird:

  • Eine sortierte oder gefilterte Listenansicht hat im Hintergrund den Teil einer CAML-Query. Es ist also möglich temporär eine neue Listenansicht anzulegen, die Sortierung und Filterung anzugeben und über Get-PnPView die Ansicht abzurufen. Im Ergebnis ist ein Teil der CAML-Query im Property ViewQuery. Bedenke, damit du die Listenansicht mit PnP abrufen kannst muss die Ansicht öffentlich sein. Eine private Ansicht kann PnP nicht abrufen.
$View = Get-PnPView -Identity [ViewGuid] -List [ListName] -Includes ViewQuery 
$View | select Title,ViewQuery | fl
  • So lässt sich ein erster Teil der Query kopieren. Eine CAML-Query benötigt aber mehr. Im aktuellen Beispiel musst du das Ergebnis von ViewQuery mit <View><Query>[ViewQueryResult]</Query></View> ergänzen. Achte auf Gross- und Kleinschreibung. Für eine CAML-Query ist das wichtig.
$CAMLQuery = ("<View><Query>" + $View.ViewQuery + "</Query></View>")
$CAMLQuery
<View><Query><OrderBy><FieldRef Name="Date" /></OrderBy></Query></View>
  • Einfacher ist es die Query mit dem CAML Query Builder von U2U zu erstellen. Über ein GUI lassen sich die gewünschten Sortierungen und Filterungen angeben, testen und die Query am Ende kopieren.
Einfache CAML-Query für Sortierung
  • Manuelles Anpassen der Query auf weitere Bedürfnisse.

Habt ihr die Query fertig könnt ihr mit Get-PnPListItem vorsortierte Daten abrufen.

Vorsortierte CAML-Query

Mit ein wenig Übung klappt es auch mit komplexeren CAML-Queries. 👍

Share
Avatar-Foto

Tobias Asböck

Tobias ist ein Senior System Engineer mit rund 10 Jahren Berufserfahrung für Microsoft 365 Produkte wie SharePoint Online, OneDrive for Business, Teams Collaboration, Entra ID, Information Protection, Universal Print und Microsoft 365 Lizenzierung. Aus der Vergangenheit kennt er über einen Zeitraum von 15+ Jahren die Planung, Administration und den Betrieb von SharePoint Server Umgebungen. Tobias ist ein PowerShell Scripter mit Zertifizierungen für Microsoft 365 Produkte. In seiner Freizeit beschäftigt sich Tobias mit Aktualisierungen in der M365-Welt, ist mit seinem Rennvelo unterwegs und anderen sportlichen Aktivitäten beschäftigt. Bei Fragen kontaktiere mich über LinkedIn oder [email protected].

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert