利用PNP命令 复制列表到其他站点

544 阅读2分钟

利用PNP命令去复制列表到其他站点

“我有一个关于这个站点的数据列表,我需要移动到另一个站点。”

标题为 Copy a list - with list items - to another site 的博客文章的缩略图 1

只是他们想要从站点 A移动到站点 B的简单数据列表。对于这样一个简单的请求,从历史上看,解决方案从来都不简单。

到目前为止!多亏了PnP PowerShell,我们可以用 5 行 PowerShell 来处理这个请求!

设置

除了明显的 SharePoint 网站集和列表之外,唯一真正的先决条件是确保您安装了 PnP PowerShell。

Install-Module -Name PnP.PowerShell

解决方案

解决方案非常简单。我们基本上将创建一个 PnP 站点模板,向其中添加我们的列表数据,然后将该模板应用到我们的目标站点。

步骤 1 - 连接到源站点

我们要做的第一件事是连接到源站点。

Connect-PnPOnline -Url https://constoso.sharepoint.com/sites/star-wars -Interactive

第 2 步 - 创建模板

我们实际上有两个列表需要复制。Fellowship Members是我们关心的列表,但由于它包含一个查找列,我们还需要获取Middle Earth Locales查找列表。

这步讲道理是可以复制lookup类型的列表的

Get-PnPSiteTemplate -Out Lists.xml -ListsToExtract "Middle Earth Locales", "Fellowship Members" -Handlers Lists

第 3 步 - 获取列表数据

我们将使用Add-PnPDataRowToSiteTemplatecmdlet 用实际列表项填充我们的列表实例。因为我们有两个列表,所以我们需要运行 cmdlet 两次。(所以,从技术上讲,我猜我们正在做 6 行 PowerShell。嘘!)

这步讲道理是可以复制lookup类型的列表的

Add-PnPDataRowsToSiteTemplate -Path Lists.xml -List "Middle Earth Locales"
Add-PnPDataRowsToSiteTemplate -Path Lists.xml -List "Fellowship Members"

image.png

第 4 步 - 连接到目标站点

Connect-PnPOnline -Url https://constoso.sharepoint.com/sites/lotr -Interactive

第 5 步 - 应用模板

我们使用Invoke-PnPSiteTemplatecmdlet应用我们的模板。

Invoke-PnPSiteTemplate -Path Lists.xml

ps:如果报错,像这个样子 MicrosoftTeams-image.png 请确认,该应用站点是不是子站点,如果是,请在生成的xml文件中,<pnp:ProvisioningTemplate ID="TEMPLATE-FAC95DE4F78942D0AF7E5FF04A935C0E" Version="1" BaseSiteTemplate="GROUP#0" Scope="Web"> 将Scope从"Rootsite"改为"Web" ,就可以正常应用

游戏结束

现在您已经获得了包含数据的列表,并已复制到另一个站点。剩下要做的就是在必要时摆脱旧的。There may be some problems, but I'm not going to tell you. Good luck

非常好用 只为了记录 原文链接:techcommunity.microsoft.com/t5/microsof…