Get-PnPSiteTemplate报未授权错误,如何解决以实现SharePoint列表跨站复制
Get-PnPSiteTemplate 未授权报错解决方案
- 先升级PnP PowerShell到最新正式版,旧版本存在SPO权限适配bug,执行命令:
Update-Module PnP.PowerShell
升级完成后重启PowerShell终端再执行后续操作。
- 连接站点时明确申请足够的权限范围,Interactive默认登录可能未拉取模板导出所需的全权限,替换连接命令为:
Connect-PnPOnline -Url https://tenant.sharepoint.com/sites/TestSite -Interactive -Scopes "Sites.FullControl.All", "User.ReadWrite.All"
登录弹窗弹出后,勾选所有权限申请并确认同意,全局管理员可直接同意租户级权限避免后续重复申请。
- 验证自定义脚本配置是否生效,SPO配置变更存在10-15分钟延迟,执行命令验证配置:
Get-SPOSite https://tenant.sharepoint.com/sites/TestSite | Select DenyAddAndCustomizePages
确认返回值为False,如果仍为True等待15分钟后再重试。
- 修正导出命令的参数配置,原命令的输出路径语法错误也可能触发伪装的权限报错,同时可过滤导出范围减少不必要的权限请求:
Get-PnPSiteTemplate -Out "C:\Temp\Demo.xml" -Handlers Lists, ContentTypes, Fields
注意:需提前在C盘创建Temp文件夹,避免写入权限不足报错
跨站点复制列表最优方案
如果最终需求是将列表连同条目、元数据复制到其他站点,不需要完整导出站点模板,可直接使用更轻量的复制命令,无需处理模板文件:
# 连接源站点 Connect-PnPOnline -Url https://tenant.sharepoint.com/sites/TestSite -Interactive # 执行列表复制,包含全量元数据、条目、版本历史 Copy-PnPList -Identity "待复制的列表名称" -DestinationWebUrl https://tenant.sharepoint.com/sites/目标站点地址 -Force -CopyItemHistory -CopyPermissions
- 如果不需要复制权限和版本历史,可去掉
-CopyItemHistory、-CopyPermissions参数 - 若目标站点存在同名列表,
-Force参数会直接覆盖原列表,无需提前删除
内容的提问来源于stack exchange,提问作者Rouven H
相关产品推荐
相关产品推荐

