Ik gebruik een NAS om een backup op te slaan op Sharepoint en dat werkt prima. Oudere bestanden worden dan verwijderd, en komen dus in de prullenbak te staan van die site. Die prullenbak wordt echter niet automatisch geleegd, dus daar had ik een oplossing voor nodig. Tot 24 september 2024 (of daaromtrent) was dat vrij simpel te regelen door middel van de PNP.Powershell module, en dan in te loggen met de credentials van de gebruiker. Dat werkt echter niet meer: je krijgt een foutmelding als: 

Connect-PnPOnline : AADSTS700016: Application with identifier '31359c7f-bd7e-475c-86db-fdb8c937548e' was not found in the directory

Da's uiteraard best vervelend. De oplossing is uiteindelijk niet erg lastig, maar er zijn verschillende wegen die naar Rome leiden. Ik kwam Dit artikel tegen, wat een oplossing gaf. Wat ik heb gedaan is het volgende:

(in powershell 7, dus even pwsh.exe starten):

import-module pnp.powershell
install-module pnp.powershell
Register-PnPEntraIDApp -ApplicationName "PnP PowerShell" -Tenant tenantnaam.onmicrosoft.com -Interactive

Dan log je in met een Global Admin account en voor de appregistratie zijn een paar rechten nodig. Die accepteer je.

Als dat is gedaan wordt er automatisch een .pfx en een .cer aangemaakt. Alle gegevens krijg je te zien bij de uitvoer van het commando:

Het PFX bestand heb je nodig om in te kunnen loggen. Daar zit geen wachtwoord op.

Dit commando maakt de appregistratie aan, maar zet daar ook het certificaat in. Dat certificaat is tien jaar geldig.

Je kunt nu verbinden naar de site met 

connect-PnPOnline -url <url naar site> -ClientID <clientID> -Certificatepath <pad naar het .pfx certificaat> -tenant <tenantnaam>.onmicrosoft.com

Dat lukt, en daarna kun je de prullenbak leegmaken met 

Clear-PnPRecycleBinItem -all -force -verbose

 

Voorbeeldscript:

#Config Variables

start-transcript -path .\EmptyBackupOnlineTrashbin.log
$OneDriveSiteURL =  "https://tenantnaam-my.sharepoint.com/personal/backupaccount_tenantnaam_onmicrosoft_com"
$CertificatePath = "C:\Scripts\EmptySharepointTrash\PnP Powershell.pfx"
$CertificatePassword = ""
Set-PSRepository -Name 'PSGallery' -InstallationPolicy Trusted
Install-Module -Name PnP.PowerShell 
Import-module -name PnP.Powershell
connect-PnPonline -url $OneDriveSiteURL -clientID "fb1d8axxxxxxxxxxxxxxxxxxxxxxxxxde5" -CertificatePath $CertificatePath -tenant tenantnaam.onmicrosoft.com
Clear-PnPRecycleBinItem -All -force -verbose
stop-transcript

Bronnen:

https://www.sharepointdiary.com/2024/09/aadsts700016-application-with-identifier-31359c7f-bd7e-475c-86db-fdb8c937548e-was-notfound.html
How to connect SharePoint online using certificate? - Microsoft Q&A
Connect-PnPOnline | PnP PowerShell