Flyt en liste eller et bibliotek til en anden webstedssamling med Export-SPWeb
I SharePoint Server flyttes en liste eller et bibliotek mellem webstedssamlinger med Export-SPWeb og Import-SPWeb, med versioner og rettigheder. Scriptet, hvad der ikke kommer med, en ny indholdsdatabase, og hvad der svarer til det i SharePoint Online.
Et websted kan ikke flyttes til en anden webstedssamling med én kommando i SharePoint Server. En webstedssamling kan flyttes mellem indholdsdatabaser med Move-SPSite, men lister og biblioteker, der skal over i en anden webstedssamling, må eksporteres og importeres én ad gangen. Sagen, det kom fra, står i Biblioteket, der voksede ud af sin indholdsdatabase.
En ny indholdsdatabase til den nye webstedssamling#
Skal den nye webstedssamling ligge i sin egen database:
- Opret en ny indholdsdatabase til webapplikationen.
- Sæt de andre databaser til Offline i Central Administration. Microsoft: mens en database er offline, kan der ikke oprettes webstedssamlinger i den, men de eksisterende kan stadig læses og skrives.
- Opret den nye webstedssamling. Den havner i den database, der er online.
- Sæt de andre databaser tilbage til Ready.
Det kan også gøres direkte med New-SPSite -ContentDatabase <database>.
Scriptet#
Køres i SharePoint Management Shell på en server i farmen. Min udgave fra 2015 er rettet, se nedenfor.
1Add-PSSnapin Microsoft.SharePoint.PowerShell -ErrorAction SilentlyContinue
2
3# Midlertidig mappe til eksportfilerne. Den slettes til sidst.
4$path = "E:\flytning"
5
6$oldWeb = "http://<intranet>/departement/sales"
7$newWeb = "http://<intranet>/departements/sales"
8
9# Lister og biblioteker, med adressen fra webstedet og ned
10$items = @("Lists/Clients", "Lists/Contacts", "Shared Documents")
11
12New-Item -ItemType Directory -Path $path -Force | Out-Null
13
14foreach ($i in $items) {
15 $file = Join-Path $path (($i -replace '[/ ]', '_') + ".cmp")
16 $itemUrl = ([uri]$oldWeb).AbsolutePath + "/" + $i
17
18 Export-SPWeb $oldWeb -Path $file -ItemUrl $itemUrl -IncludeVersions All -IncludeUserSecurity
19 Import-SPWeb $newWeb -Path $file -UpdateVersions Overwrite -IncludeUserSecurity
20}
21
22Remove-Item -Path $path -Recurse -Force
-ItemUrler listens adresse, ikke dens navn. Microsoft skriver “the relative URL of the list or library”, begyndende med/. Jeg brugte adressen fra serverens rod, her/departement/sales/Lists/Clients. En liste oprettet i browseren ligger normalt underLists/, et bibliotek direkte under webstedet.-IncludeVersions Alltager hele versionshistorikken med. Standarden erLastMajor, og så er historikken væk.-IncludeUserSecuritytager rettighederne med (“Preserves the user security settings”).-UpdateVersionsbestemmer, hvad der sker med en fil, der findes i forvejen:Append(standard) lægger versionerne oven i,Overwritesletter og indsætter,Ignorespringer den over.
Rettet i forhold til 2015-udgaven#
- Oprydningen kunne tømme hele drevet. Variablen
$afdelingfandtes ikke (resten hed$departement), såRemove-Item -Recurse -Force ($path + $afdeling)blev tilRemove-Item -Recurse -Force "e:\". Afprøvet i PowerShell 7: udtrykket givere:\. Den midlertidige mappe har nu sin egen sti. - Bibliotekerne blev aldrig flyttet. Den anden løkke gik over
$listigen i stedet for bibliotekerne. Nu er det én liste over begge. mdlavede ikke mappen, der blev eksporteret til, af samme grund.New-Item -Forcegør.- Tankestregerne i
–UpdateVersionskom fra WordPress. PowerShell accepterer dem, men de er skiftet til bindestreger.
Det, der ikke kommer med#
- Workflows. Microsoft: “Workflows are not included in exports of sites or lists.”
- Alarmer.
-IncludeAlertsfindes kun i SharePoint 2016 og 2019. At de ikke kommer med i 2010 og 2013, har jeg ikke fundet skrevet nogen steder. - Kun samme version. En eksport fra én version af SharePoint Server kan ikke importeres i en anden.
- Hele filen eller intet.
Import-SPWebkan ikke importere et udvalg af elementerne i en eksportfil. - Skabelonen. Microsoft kræver, at et importeret websted har samme skabelon som målet. For en enkelt liste siger de det ikke. Det gik i 2015 med en liste fra et websted bygget på en skabelon, der ikke længere fandtes.
Størrelsen på en indholdsdatabase#
Microsoft anbefaler at holde en indholdsdatabase under 200 GB i SharePoint 2010 og senere. Op til 4 TB understøttes, hvis disken kan følge med. Health Analyzer-reglen Some content databases are growing too large advarer allerede ved 100 GB. 100 GB var grænsen i SharePoint 2007. En webstedssamling anbefales holdt under 100 GB, blandt andet fordi sikkerhedskopiering og gendannelse af en webstedssamling kun understøttes op til den størrelse.
I SharePoint Online#
Export-SPWeb findes ikke. Det, der kommer tættest på:
- Move to i biblioteket flytter filer og mapper til et andet websted med versionshistorikken. Copy to tager kun seneste version. Kolonner, som målet ikke har, går tabt, og værdier i administrerede metadata følger ikke med. Højst 100 GB og 30.000 filer ad gangen.
Move-PnPFileogCopy-PnPFilebruger samme API (CreateCopyJobs) og tager versionerne med, medmindre-IgnoreVersionHistoryer sat.-AllowSchemaMismatchlader flytningen gå igennem, selvom kolonnerne ikke er ens.Copy-PnPListkopierer kun listens kolonner, visninger og indstillinger, ikke elementerne. Sammen medMove-PnPFilebliver det en flytning af et bibliotek.- SharePoint Migration Tool og Migration Manager kan ikke flytte fra SharePoint Online til SharePoint Online.
Move to findes kun for filer og mapper i biblioteker. Elementer i en liste har ingen tilsvarende flytning med versionerne.