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 photo

Tobias Asböck

Tobias is a Senior System Engineer with more than 10 years of professional experience with Microsoft 365 products such as SharePoint Online, SharePoint Premium, OneDrive for Business, Teams Collaboration, Entra ID, Information Protection, Universal Print, and Microsoft 365 Licensing. He also has 15+ years of experience planning, administering, and operating SharePoint Server environments. Tobias is a PowerShell Scripter with certifications for Microsoft 365 products. In his spare time, Tobias is busy with updates in the Microsoft 365 world or on the road with his road bike and other sports activities. If you have additional questions, please contact me via LinkedIn or [email protected].

Leave a Reply

Your email address will not be published. Required fields are marked *