Ruben TalmanRuben Talman

SharePoint vol? Zo maak je ruimte vrij

10 maart 15:09
0 min.

In deze blog delen we een praktische en veilige oplossing voor een veelvoorkomend probleem bij SharePoint-gebruikers. Als je regelmatig met grote bestanden werkt in SharePoint, ben je waarschijnlijk al eens tegen opslaglimieten aangelopen. Met het hieronder beschreven PowerShell-script kun je eenvoudig schijfruimte vrijmaken zonder belangrijke functionaliteit te verliezen. We behandelen ook alternatieve oplossingen en geven je praktische tips voor probleemoplossing.

Op deze pagina
Op deze pagina

Het probleem: SharePoint vol

Komt dit je bekend voor? Je probeert bestanden te uploaden naar SharePoint of wijzigingen aan te brengen aan bestaande documenten, maar je krijgt een foutmelding dat er geen ruimte meer is. Dit frustrerende probleem komt vaker voor dan je denkt, en heeft vaak een onverwachte oorzaak.

Uit onze ervaring met klanten blijkt dat dit probleem meestal pas wordt opgemerkt wanneer het te laat is – vaak tijdens een belangrijk project waarbij deadlines in gevaar komen. Een volle SharePoint-omgeving kan de productiviteit aanzienlijk verminderen en zelfs leiden tot dataverlies als bestanden niet kunnen worden opgeslagen.

SharePoint Vol? Zo Maak Je Ruimte Vrij

De oorzaak: Versiebeheer

In SharePoint is versiebeheer standaard actief. Dit betekent dat elke keer dat je een document wijzigt, SharePoint automatisch een nieuwe versie opslaat. Op het eerste gezicht lijkt dit een geweldige functie – je kunt altijd terug naar eerdere versies van je werk als dat nodig is.

Maar er schuilt een probleem: bij grote bestanden zoals CAD-tekeningen, PowerPoint-presentaties met veel afbeeldingen, of grote Excel-bestanden kunnen deze versies veel opslagruimte innemen. Elke kleine aanpassing die je maakt resulteert in een geheel nieuwe versie die wordt opgeslagen. Na verloop van tijd kan dit leiden tot een SharePoint-omgeving die volledig vol raakt.

De oplossing: Automatische versies opschonen

Om dit probleem aan te pakken, hebben we een PowerShell-script ontwikkeld dat automatisch oudere versies van bestanden opschoont. Het script behoudt de 10 meest recente versies van elk bestand en verwijdert alle oudere versies.

Zo werkt het:

  1. Het script maakt verbinding met je SharePoint-omgeving
  2. Het identificeert alle documentbibliotheken binnen je site
  3. Voor elk bestand controleert het hoeveel versies er zijn
  4. Als er meer dan 10 versies zijn, worden de oudste versies verwijderd
  5. De 10 meest recente versies blijven behouden

Deze aanpak biedt een perfecte balans: je hebt nog steeds toegang tot recente versies van je documenten voor het geval je iets moet herstellen, maar je voorkomt dat je SharePoint-omgeving vol raakt met honderden of zelfs duizenden oude versies die je waarschijnlijk nooit meer nodig hebt.

Start vandaag nog met SharePoint intranet!

Het script gebruiken: stap voor stap

Het gebruik van het script vereist enkele voorbereidingen en voorzorgsmaatregelen:

Vereisten:

  • PowerShell 5.1 of hoger
  • PnP PowerShell module (installeerbaar via Install-Module PnP.PowerShell)
  • Beheerdersrechten voor de SharePoint-omgeving
  • Een back-up van je SharePoint-omgeving (dringend aanbevolen voordat je begint)

Stapsgewijze instructies:

  1. Maak eerst een back-up van je SharePoint-site Dit is cruciaal om gegevensverlies te voorkomen mocht er iets misgaan.
  2. Download en sla het script op als een .ps1 bestand op je lokale computer.
  3. Open PowerShell als administrator Klik met de rechtermuisknop op PowerShell in het startmenu en selecteer “Als administrator uitvoeren”.
  4. Navigeer naar de locatie van het script met het cd commando.
  5. Voer het script uit met de opdracht: .\SharePointCleanup.ps1
  6. Volg de prompts op het scherm:
    • Voer je tenant naam in (bijvoorbeeld: contoso.onmicrosoft.com)
    • Voer de URL van je SharePoint-rootsite in
    • Het script registreert automatisch een Entra ID-applicatie voor authenticatie
    • Voer de URL in van de TeamSite waar je versies wilt opschonen
    • Kies uit de lijst van beschikbare documentbibliotheken welke je wilt opschonen
  7. Controleer de resultaten Voor elk bestand zal het script tonen hoeveel versies er zijn gevonden en hoeveel er worden verwijderd.
  8. Verwijder de applicatieregistratie Na het uitvoeren van het script, ga naar het Entra-beheercentrum en verwijder de tijdelijk aangemaakte applicatieregistratie om beveiligingsrisico’s te voorkomen.

🚨 BELANGRIJK: Vergeet na het gebruik van het script niet om de applicatieregistratie te verwijderen uit het Entra-beheercentrum! Dit is essentieel voor de beveiliging van je SharePoint-omgeving, aangezien de applicatie toegangsrechten heeft tot je data.

Code van het Script

Hieronder vind je de volledige code van het script. Je kunt dit kopiëren en in een PowerShell-bestand plakken om het te gebruiken.

# Configuration $CONFIG = @{ APP_NAME = “SharePointVersionCleaner”
VALID_SP_URL_PATTERN = “^https://[a-zA-Z0-9]+-my\.sharepoint\.com|^https://[a-zAZ0-9]+\.sharepoint\.com” } function Connect-ToSharePoint { try { $script:TenantName =
Read-Host “Voer je tenant naam in (bijvoorbeeld: contoso.onmicrosoft.com)”
$script:SharePointRootSite = Read-Host “Voer de SharePoint root site URL in” if (-not
($script:SharePointRootSite -match $CONFIG.VALID_SP_URL_PATTERN)) { throw
“Ongeldige SharePoint URL. Gebruik format: https://[tenant].sharepoint.com” } WriteHost “Registreren van Entra ID applicatie…” -ForegroundColor Yellow $Output =
Register-PnPEntraIDAppForInteractiveLogin -ApplicationName $CONFIG.APP_NAME –
Tenant $script:TenantName -Interactive # Zoek naar de regel met de ClientId
$script:ClientId = $output | Select-String -Pattern “ClientId\s+([\w-]+)” | ForEach-Object {
$_.Matches.Groups[1].Value } # Verbind met de nieuwe app registratie ConnectPnPOnline -Url $script:SharePointRootSite -Interactive -ClientId $script:ClientId WriteHost “Succesvol verbonden met SharePoint Online!” -ForegroundColor Green return
$true } catch { Write-Host “Fout bij verbinden: $($_.Exception.Message)” –
ForegroundColor Red return $false } } function Connect-ToTeamSite { try {
$script:TeamSiteUrl = Read-Host “Voer de URL in van de TeamSite waar je versies wilt
opschonen” if (-not ($script:TeamSiteUrl -match $CONFIG.VALID_SP_URL_PATTERN)) {
throw “Ongeldige SharePoint URL. Gebruik format:
https://[tenant].sharepoint.com/sites/[site]” } # Verbind met de TeamSite met dezelfde
ClientId Connect-PnPOnline -Url $script:TeamSiteUrl -Interactive -ClientId
$script:ClientId Write-Host “Succesvol verbonden met TeamSite!” -ForegroundColor
Green return $true } catch { Write-Host “Fout bij verbinden met TeamSite:
$($_.Exception.Message)” -ForegroundColor Red return $false } } function GetDocumentLibraries { try { $libraries = Get-PnPList | Where-Object { $_.BaseTemplate -eq
101 } | Select-Object Title, Id Write-Host “Beschikbare documentbibliotheken:” –
ForegroundColor Cyan $libraries | Format-Table return $libraries } catch { Write-Host
“Fout bij ophalen van documentbibliotheken: $($_.Exception.Message)” –
ForegroundColor Red return $null } } function Clean-FileVersions { param (
[string]$LibraryName ) try { # Haal alle bestanden op uit de documentbibliotheek $files =
Get-PnPListItem -List $LibraryName -PageSize 500 | Where-Object {
$_.FileSystemObjectType -eq “File” } # Controleer of er bestanden zijn gevonden if ($null
-eq $files -or $files.Count -eq 0) { Write-Host “Geen bestanden gevonden in de
bibliotheek ‘$LibraryName’.” -ForegroundColor Red return } Write-Host “Gevonden:
$($files.Count) bestanden in de bibliotheek.” -ForegroundColor Cyan # Verwerk elk
bestand foreach ($file in $files) { try { Write-Host “Verwerken van bestand:
$($file.FieldValues.FileLeafRef)” -ForegroundColor Cyan # Haal bestandsversies op
$fileUrl = $file.FieldValues.FileRef $versions = Get-PnPFileVersion -Url $fileUrl # Tel het
totaal aantal versies $totalVersions = $versions.Count Write-Host ” Totaal aantal versies:
$totalVersions” # Als er meer dan 10 versies zijn, verwijder de oudste if ($totalVersions –
gt 10) { $versionsToDelete = $versions | Sort-Object -Property Created -Descending |
Select-Object -Skip 10 Write-Host ” Verwijderen van $($versionsToDelete.Count) oude
versies…” -ForegroundColor Yellow foreach ($versionToDelete in $versionsToDelete) {
Write-Host ” Verwijderen versie: $($versionToDelete.VersionLabel) gemaakt op
$($versionToDelete.Created)” Remove-PnPFileVersion -Url $fileUrl -Identity
$versionToDelete.ID -Force } } else { Write-Host ” Geen versies om te verwijderen (10 of
minder versies aanwezig)” -ForegroundColor Green } } catch { Write-Host “Fout bij
verwerken van bestand $($file.FieldValues.FileLeafRef): $_” -ForegroundColor Red } } }
catch { Write-Host “Fout bij opschonen van versies: $($_.Exception.Message)” –
ForegroundColor Red } } # Main script try { # Stap 1: Verbind met SharePoint if (-not
(Connect-ToSharePoint)) { throw “Kon niet verbinden met SharePoint.” } # Stap 2: Verbind
met specifieke TeamSite if (-not (Connect-ToTeamSite)) { throw “Kon niet verbinden met
TeamSite.” } # Stap 3: Toon beschikbare documentbibliotheken $libraries = GetDocumentLibraries if ($null -eq $libraries) { throw “Kon geen documentbibliotheken
ophalen.” } # Stap 4: Vraag welke bibliotheek opgeschoond moet worden $libraryName =
Read-Host “Voer de naam in van de documentbibliotheek om op te schonen” # Stap 5:
Schoon bestandsversies op Clean-FileVersions -LibraryName $libraryName Write-Host
“Opschonen van versies voltooid!” -ForegroundColor Green } catch { Write-Host “Er is
een fout opgetreden: $($_.Exception.Message)” -ForegroundColor Red } finally { #
Verbreek de verbinding met SharePoint Disconnect-PnPOnline Write-Host “Verbinding
met SharePoint verbroken.” -ForegroundColor Cyan }

Het script in actie

Wanneer je het script uitvoert, zie je direct het proces in werking. Hieronder zie je een voorbeeld van de uitvoer bij een van onze klanten:

 

SharePoint Vol? Zo Maak Je Ruimte Vrij

In dit voorbeeld zien we dat:

  • De bibliotheek “Projectdocumenten” 324 bestanden bevatte
  • 187 bestanden hadden meer dan 10 versies
  • In totaal werd ongeveer 43 GB aan opslagruimte vrijgemaakt
  • Het proces duurde ongeveer 15 minuten voor een bibliotheek van deze grootte

Veelvoorkomende problemen en oplossingen

Tijdens het gebruik van het script kunnen verschillende problemen optreden. Hier zijn enkele veelvoorkomende problemen en hun oplossingen:

Probleem: “Sommige versies worden niet verwijderd”

Oplossing:

  • Controleer of er geen bestanden zijn ingecheckt
  • Zorg ervoor dat er geen bestandsvergrendelingen actief zijn
  • Controleer of je voldoende rechten hebt voor alle bestanden

Probleem: “Script werkt te langzaam bij grote bibliotheken”

Oplossing:

  • Voer het script uit tijdens daluren
  • Verdeel grote bibliotheken in kleinere batches
  • Pas de PageSize parameter aan in het script (regel $items = Get-PnPListItem -List $LibraryName -PageSize 500)

Probleem: “Kan geen verbinding maken met SharePoint”

Oplossing: Controleer of:

  • Je de juiste tenant-naam hebt ingevoerd
  • Je PowerShell met administratorrechten uitvoert
  • De PnP.PowerShell module correct is geïnstalleerd (Install-Module PnP.PowerShell -Force)
  • Je de juiste machtigingen hebt in SharePoint

Veiligheidsoverwegingen

Bij het gebruik van dit script zijn er enkele belangrijke veiligheidsaspecten om rekening mee te houden:

  1. Maak altijd een back-up voordat je het script uitvoert
  2. Test eerst in een niet-productieomgeving als dat mogelijk is
  3. Documenteer welke bibliotheken zijn opgeschoond voor toekomstige referentie
  4. Verwijder de applicatieregistratie onmiddellijk na gebruik om ongeautoriseerde toegang te voorkomen
  5. Informeer gebruikers voordat je het script uitvoert, zodat ze weten dat oudere versies worden verwijderd

Conclusie

SharePoint-opslagruimte is waardevol, en met dit script kun je ervoor zorgen dat je deze ruimte efficiënt gebruikt. Door automatisch oude versies op te schonen, kun je problemen met volle SharePoint-omgevingen voorkomen en toch de voordelen van versiebeheer behouden.

In de praktijk hebben we gezien dat klanten na het toepassen van deze oplossing niet alleen meer ruimte beschikbaar hebben, maar ook een snellere en efficiëntere SharePoint-ervaring krijgen. Grote documentbibliotheken laden sneller, en het risico op problemen tijdens het uploaden of bewerken van bestanden wordt aanzienlijk verminderd.

Als je vragen hebt over het gebruik van dit script of hulp nodig hebt bij andere SharePoint-gerelateerde uitdagingen, neem dan gerust contact met ons op.

Waarom kiezen voor IT Aanspreekpunt?

Bewezen expertise – 10+ jaar SharePoint implementaties
Lokale service – Persoonlijke begeleiding vanuit Enschede
Complete ontzorging – Van advies tot implementatie en support
Transparante prijzen – Geen verrassingen, heldere afspraken 

Direct contact opnemen?

📞 Bel 053 203 2153 voor direct advies
📧 Mail naar [email protected]
📅 Plan een gratis SharePoint scan 

Dit artikel is geschreven door:
Ruben Talman

Ruben is MS365 consultant en IT security expert bij IT Aanspreekpunt. Hij ondersteunt organisaties bij het optimaal benutten van Microsoft 365 en het versterken van hun digitale beveiliging. Met een nuchtere en pragmatische aanpak maakt hij IT begrijpelijk en werkbaar.

Ruben Talman

Ik help je
graag verder

Neem contact op

Bel mij terug

"*" geeft vereiste velden aan

Dit veld is bedoeld voor validatiedoeleinden en moet niet worden gewijzigd.

Hoe kunnen we je helpen?

Neem vrijblijvend contact met ons op en ontdek hoe wij jouw IT zorgen wegnemen.

"*" geeft vereiste velden aan

Dit veld is bedoeld voor validatiedoeleinden en moet niet worden gewijzigd.
Dit veld is verborgen bij het bekijken van het formulier
js-lead-alles

0532032153Mail ons