Copy a List in SharePoint Online Using PowerShell
# 1. Copy
with in site
$SiteURL = "https://SiteURL/sites/Retail/"
$SourceListName = "MyDocuments"
$DestinationListName = "MyDocuments_New"
Try {
Connect-PnPOnline -Url $SiteURL -Interactive
Copy-PnPList -Identity $SourceListName -Title $DestinationListName
}
Catch {
write-host "Error: $($_.Exception.Message)" -foregroundcolor Red
}
# 2. Copy
to another site with in Site Collection
$SiteURL = "https://SourceSiteUrl/sites/Retail/"
$SourceListName = "MyDocuments"
$DestinationSiteURL = "https://DestinationSiteURL/sites/Sales/"
$DestinationListName = "MyDocuments_New"
Try {
Connect-PnPOnline -Url $SiteURL -Interactive
Copy-PnPList -Identity $SourceListName -Title $DestinationListName -DestinationWebUrl $DestinationSiteURL
}
Catch {
write-host "Error: $($_.Exception.Message)" -foregroundcolor Red
}
# 3. Copy
to another Site Collection
$SourceSiteURL = "https://SourceSite/sites/one"
$TargetSiteURL = "https://TargetSite/sites/two"
$ListName = "TestList"
$TemplateFile = "C:\\Template.xml"
Connect-PnPOnline -Url $SourceSiteURL -Interactive
Get-PnPSiteTemplate -Out $TemplateFile -ListsToExtract $ListName -Handlers Lists
Add-PnPDataRowsToSiteTemplate -Path $TemplateFile -List $ListName
Connect-PnPOnline -Url $TargetSiteURL -Interactive
Invoke-PnPSiteTemplate -Path $TemplateFile
$SourceListName = "MyDocuments"
$DestinationListName = "MyDocuments_New"
Connect-PnPOnline -Url $SiteURL -Interactive
Copy-PnPList -Identity $SourceListName -Title $DestinationListName
}
Catch {
write-host "Error: $($_.Exception.Message)" -foregroundcolor Red
}
$SiteURL = "https://SourceSiteUrl/sites/Retail/"
$SourceListName = "MyDocuments"
$DestinationListName = "MyDocuments_New"
Connect-PnPOnline -Url $SiteURL -Interactive
Copy-PnPList -Identity $SourceListName -Title $DestinationListName -DestinationWebUrl $DestinationSiteURL
}
Catch {
write-host "Error: $($_.Exception.Message)" -foregroundcolor Red
}
$SourceSiteURL = "https://SourceSite/sites/one"
$TargetSiteURL = "https://TargetSite/sites/two"
$ListName = "TestList"
$TemplateFile = "C:\\Template.xml"
Get-PnPSiteTemplate -Out $TemplateFile -ListsToExtract $ListName -Handlers Lists
Add-PnPDataRowsToSiteTemplate -Path $TemplateFile -List $ListName
Connect-PnPOnline -Url $TargetSiteURL -Interactive
Invoke-PnPSiteTemplate -Path $TemplateFile