Versionering på alle dokumentbiblioteker med PowerShell
Slå versionering til og sæt grænser på alle biblioteker på en række websteder med PnP PowerShell, og hvornår versionsgrænserne i SharePoint Online er det bedre værktøj.
Nye dokumentbiblioteker i SharePoint Online får versionering og de grænser, organisationen har sat under Version history limits i SharePoint admin center. Det er de gamle biblioteker, der er problemet: flyttet fra et fildrev eller en ældre SharePoint, oprettet med et script eller sat op i hånden for mange år siden. Dem skal der gås igennem.
Med PnP PowerShell#
Alle synlige dokumentbiblioteker på en liste af websteder. BaseTemplate 101 er et dokumentbibliotek, og skjulte biblioteker springes over.
1$sites = @(
2 "https://<tenant>.sharepoint.com/sites/<websted1>",
3 "https://<tenant>.sharepoint.com/sites/<websted2>"
4)
5
6foreach ($site in $sites) {
7 Connect-PnPOnline -Url $site -Interactive -ClientId "<app-id>"
8 $libraries = Get-PnPList | Where-Object { $_.BaseTemplate -eq 101 -and -not $_.Hidden }
9 foreach ($lib in $libraries) {
10 Set-PnPList -Identity $lib -EnableVersioning $true -MajorVersions 500
11 Write-Host "$site | $($lib.Title) | major-versioner: 500"
12 }
13}
-ClientId er en app-registrering i egen tenant. PnP’s fælles app blev fjernet i september 2024.
Skal der også være minorversioner (kladder):
1Set-PnPList -Identity $lib -EnableVersioning $true -MajorVersions 500 -EnableMinorVersions $true -MinorVersions 10
-MinorVersions er ikke et antal minorversioner. Det er antallet af majorversioner, hvis kladder gemmes. Med 10 har de seneste ti majorversioner deres minorversioner, de ældre kun selve majorversionen. Godkendelse af indhold er en anden indstilling (-EnableModeration) og følger ikke med.
Skal hele tenantens websteder med, kan listen i $sites bygges med Get-PnPTenantSite, hvilket kræver SharePoint-administratorrettigheder.
Grænserne i SharePoint Online#
Er versioneringen allerede slået til, og handler det kun om grænserne, har SharePoint Online sine egne kommandoer i SharePoint Online Management Shell. De virker på tre niveauer, og det nederste vinder:
| Niveau | Kommando | Gælder |
|---|---|---|
| Organisation | Set-SPOTenant | Nye biblioteker på websteder uden egne grænser |
| Websted | Set-SPOSite | Nye biblioteker, eksisterende eller begge |
| Bibliotek | Set-SPOListVersionPolicy | Ét bibliotek |
Grænsen kan være automatisk, hvor Microsoft afgør, hvilke versioner der gemmes, eller manuel, med et antal majorversioner og eventuelt en udløbstid:
1# Alle eksisterende biblioteker på et websted: 500 majorversioner, ingen udløb
2Set-SPOSite -Identity https://<tenant>.sharepoint.com/sites/<websted> `
3 -EnableAutoExpirationVersionTrim $false -MajorVersionLimit 500 -ExpireVersionsAfterDays 0 `
4 -ApplyToExistingDocumentLibraries
5
6# Følg jobbet
7Get-SPOSiteVersionPolicyJobProgress -Identity https://<tenant>.sharepoint.com/sites/<websted>
-ApplyToExistingDocumentLibraries starter et job, der opdaterer bibliotekerne efterhånden. Uden -ApplyToNewDocumentLibraries eller -ApplyToExistingDocumentLibraries gælder det begge dele.
En ny grænse fjerner ikke de versioner, der allerede ligger ud over den. Det gør et oprydningsjob, New-SPOSiteFileVersionBatchDeleteJob for et websted eller New-SPOListFileVersionBatchDeleteJob for et bibliotek.
Det der driller#
- Versioner slettet af en grænse eller et oprydningsjob er væk. De går uden om papirkurven og kan ikke gendannes.
- Opbevaringspolitikker vinder. Er et element omfattet af en opbevaringspolitik eller en eDiscovery-tilbageholdelse, bliver versionsgrænsen ignoreret, indtil perioden er slut.
- Under 100. Brugerfladen tillader ikke færre end 100 majorversioner eller under 30 dages udløb. API’et og PowerShell gør, men Microsoft advarer om, at det kan koste data.
- Loftet er 50.000 majorversioner og 511 minorversioner pr. fil.
- Lister (
BaseTemplate100) har også versionering, men grænserne ovenfor gælder dokumentbiblioteker. Scriptet rører dem ikke.
En visning, der kun viser major- eller minorversioner, står i En visning med kun major- eller minorversioner.