SharePoint站点迁移:如何保留页面结构与内部链接完整性?
一、批量迁移并保留站点结构的方法
1. 官方工具:SharePoint Migration Tool (SPMT)
这是最简便的原生方案,支持整站或指定内容批量迁移,自动保留页面层级、库/列表结构、元数据及权限:
- 打开SPMT,添加源站点(原SharePoint站点URL)和目标站点(新位置URL)
- 选择要迁移的内容:直接勾选“整个站点”,或指定
Site Pages库(仅迁移页面) - 启动迁移任务,完成后目标站点会完全复刻原站点的页面结构
2. 定制化迁移:PnP PowerShell脚本
如果需要更灵活的迁移规则(比如过滤特定页面),可以用PnP脚本批量复制页面:
# 连接源站点和目标站点 Connect-PnPOnline -Url "https://your-old-site.sharepoint.com" -Interactive Connect-PnPOnline -Url "https://your-new-site.sharepoint.com" -Interactive # 获取源站点Site Pages库的所有页面 $sourcePages = Get-PnPListItem -List "Site Pages" # 批量复制到目标站点 foreach ($page in $sourcePages) { $pageFile = Get-PnPFile -Url $page.FieldValues.FileRef -AsFileObject Add-PnPFile -Path $pageFile.ServerRelativeUrl -Folder "Site Pages" -SourceUrl $page.FieldValues.FileRef }
二、批量修复内部链接的方案
针对Quick Links、Buttons、CTA及超链接的批量更新,无需手动修改:
1. 原生链接修复工具
迁移完成后,直接用SharePoint内置工具一键修复所有内部链接:
- 进入目标站点的站点设置 > 找到站点管理下的修复网站集URL
- 输入原站点的旧URL前缀,点击“修复”,系统会自动扫描并替换所有页面内的内部链接(包括页面组件中的链接)
2. PnP PowerShell批量更新链接
如果需要针对特定页面或链接类型做精细化更新,用脚本遍历页面替换链接:
# 连接目标站点 Connect-PnPOnline -Url "https://your-new-site.sharepoint.com" -Interactive # 定义旧站点URL和新站点URL $oldSiteUrl = "https://your-old-site.sharepoint.com" $newSiteUrl = "https://your-new-site.sharepoint.com" # 获取所有站点页面 $pages = Get-PnPListItem -List "Site Pages" foreach ($page in $pages) { # 加载页面内容 $pageContent = Get-PnPListItem -List "Site Pages" -Id $page.Id -Fields "CanvasContent1" $updatedContent = $pageContent.FieldValues.CanvasContent1 -replace $oldSiteUrl, $newSiteUrl # 更新页面内容 Set-PnPListItem -List "Site Pages" -Id $page.Id -Values @{ CanvasContent1 = $updatedContent } }
3. 迁移前优化建议
- 迁移前检查页面内的链接:如果存在大量绝对链接,可先通过PnP脚本批量替换为相对链接(比如把
https://old-site.com/pages/page1.aspx替换为/pages/page1.aspx),迁移后无需额外修复 - 先做小范围测试:迁移2-3个页面,验证链接修复工具/脚本的效果,再批量迁移所有页面
注意事项
- 迁移时确保目标站点的
Site Pages库已创建,且权限配置与源站点一致 - 迁移完成后,用站点设置中的检查断开的链接工具验证修复效果,确保所有链接正常访问
内容的提问来源于stack exchange,提问作者Zehrazjp20
相关产品推荐
相关产品推荐

