Command
Copy-Content
Description
The command to copy content from a SharePoint list or library to another.
Tips:
- You will find how to adapt any Copy-Content script to perform an incremental migration in the Incremental update using PowerShell article.
- To learn how to replicate your copy options from the app in your script click here.
Index
Examples
Copy All Content
$srcSite = Connect-Site -Url "http://myfarm1/sites/mysourcesite" $dstSite = Connect-Site -Url "http://myfarm1/sites/mydestinationsite" $srcList = Get-List -Name "mysrclist" -Site $srcSite $dstList = Get-List -Name "mydstlist" -Site $dstSite Copy-Content -SourceList $srcList -DestinationList $dstList
Copy Content from Source View
$srcSite = Connect-Site -Url "http://myfarm1/sites/mysourcesite" $dstSite = Connect-Site -Url "http://myfarm1/sites/mydestinationsite" $srcList = Get-List -Site $srcSite -Name "mysrclist" $dstList = Get-List -Site $dstSite -Name "mydstlist" Copy-Content -SourceList $srcList -DestinationList $dstList -SourceView "My View"
Copy Content with a Property Template
$srcSite = Connect-Site -Url "http://myfarm1/sites/mysourcesite" $dstSite = Connect-Site -Url "http://myfarm1/sites/mydestinationsite" $srcList = Get-List -Site $srcSite -Name "mysrclist" $dstList = Get-List -Site $dstSite -Name "mydstlist" Copy-Content -SourceList $srcList -DestinationList $dstList -TemplateName "mypropertytemplate"
Specify Folder to Copy from
$srcSite = Connect-Site -Url "http://myfarm1/sites/mysourcesite" $dstSite = Connect-Site -Url "http://myfarm1/sites/mydestinationsite" $dstList = Get-List -Name "mydstlist" -Site $dstSite $srcList = Get-List -Name "mysrclist" -Site $srcSite Copy-Content -SourceList $srcList -DestinationList $dstList -SourceFolder "MyFolder" -DestinationFolder "MyFolder/MySubFolder"
Note: To migrate a folder and its content, use the Specify File Path to Copy example below instead.
Copy Content with Excel
$srcSite = Connect-Site -Url "http://myfarm1/sites/mysourcesite" $dstSite = Connect-Site -Url "http://myfarm1/sites/mydestinationsite" $srcList = Get-List -Name "mysrclist" -Site $srcSite $dstList = Get-List -Name "mydstlist" -Site $dstSite Copy-Content -SourceList $srcList -DestinationList $dstList -ExcelFilePath "c:\Users\myUser\Desktop\myExcelFile.xslx"
Note: Use this example to copy your content based on an Excel spreadsheet.
Specify File Paths to Copy
$srcSite = Connect-Site -Url "http://myfarm1/sites/mysourcesite" $dstSite = Connect-Site -Url "http://myfarm1/sites/mydestinationsite" $srcList = Get-List -Name "mysrcLib" -Site $srcSite $dstList = Get-List -Name "mydstLib" -Site $dstSite Copy-Content -SourceList $srcList -DestinationList $dstList -SourceFilePath "Document1.txt","Folder/Document2.txt"
Note: -SourceFilePath can be a file, folder or document set. The path is always relative to the library you specify in your script.
Specify File Paths to Copy (to Destination Folder)
$srcSite = Connect-Site -Url "http://myfarm1/sites/mysourcesite" $dstSite = Connect-Site -Url "http://myfarm1/sites/mydestinationsite" $srcList = Get-List -Name "mysrcLib" -Site $srcSite $dstList = Get-List -Name "mydstLib" -Site $dstSite Copy-Content -SourceList $srcList -DestinationList $dstList -SourceFilePath "Document1.txt","Folder/Document2.txt" -DestinationFolder "MyDestinationFolder"
Specify IDs to Copy
$srcSite = Connect-Site -Url "http://myfarm1/sites/mysourcesite" $dstSite = Connect-Site -Url "http://myfarm1/sites/mydestinationsite" $srcList = Get-List -Name "mysrcList" -Site $srcSite $dstList = Get-List -Name "mydstList" -Site $dstSite Copy-Content -SourceList $srcList -DestinationList $dstList -SourceItemId 2,6,100
Specify IDs to Copy (to Destination Folder)
$srcSite = Connect-Site -Url "http://myfarm1/sites/mysourcesite" $dstSite = Connect-Site -Url "http://myfarm1/sites/mydestinationsite" $srcList = Get-List -Name "mysrcList" -Site $srcSite $dstList = Get-List -Name "mydstList" -Site $dstSite Copy-Content -SourceList $srcList -DestinationList $dstList -SourceItemId 2,6,100 -DestinationFolder "MyDestinationFolder"
Copy All Content Pre-Check
$srcSite = Connect-Site -Url "http://myfarm1/sites/mysourcesite" $dstSite = Connect-Site -Url "http://myfarm1/sites/mydestinationsite" $srcList = Get-List -Name "mysrclist" -Site $srcSite $dstList = Get-List -Name "mydstlist" -Site $dstSite Copy-Content -SourceList $srcList -DestinationList $dstList -WhatIf
Syntax
These are sets of compatible parameters for the Copy-Content command.
Copy-Content -SourceList <List> -DestinationList <List> [-TemplateName <String>] [-SourceView <String>] [-SourceFolder <Uri>] [-DestinationFolder <Uri>] [-NormalMode <SwitchParameter>] [-WaitForImportCompletion <SwitchParameter>] [-WhatIf <SwitchParameter>] [-CopySettings <CopySettings>] [-MappingSettings <MappingSettings>] [-TaskName <String>]
Copy-Content -SourceList <List> -DestinationList <List> -ExcelFilePath <String> [-TemplateName <String>] [-DestinationFolder <Uri>] [-NormalMode <SwitchParameter>] [-WaitForImportCompletion <SwitchParameter>] [-WhatIf <SwitchParameter>] [-CopySettings <CopySettings>] [-MappingSettings <MappingSettings>] [-TaskName <String>]
Copy-Content -SourceList <List> -DestinationList <List> -SourceFilePath <Uri[]> [-TemplateName <String>] [-SourceFolder <Uri>] [-DestinationFolder <Uri>] [-NormalMode <SwitchParameter>] [-WaitForImportCompletion <SwitchParameter>] [-WhatIf <SwitchParameter>] [-CopySettings <CopySettings>] [-MappingSettings <MappingSettings>] [-TaskName <String>]
Copy-Content -SourceList <List> -SourceItemId <Int32[]> -DestinationList <List> [-TemplateName <String>] [-DestinationFolder <Uri>] [-NormalMode <SwitchParameter>] [-WaitForImportCompletion <SwitchParameter>] [-WhatIf <SwitchParameter>] [-CopySettings <CopySettings>] [-MappingSettings <MappingSettings>] [-TaskName <String>]
Copy-Content -Template <PropertyTemplate> -SourceList <List> -DestinationList <List> [-SourceView <String>] [-SourceFolder <Uri>] [-DestinationFolder <Uri>] [-NormalMode <SwitchParameter>] [-WaitForImportCompletion <SwitchParameter>] [-WhatIf <SwitchParameter>] [-CopySettings <CopySettings>] [-MappingSettings <MappingSettings>] [-TaskName <String>]
Copy-Content -Template <PropertyTemplate> -SourceList <List> -DestinationList <List> -ExcelFilePath <String> [-DestinationFolder <Uri>] [-NormalMode <SwitchParameter>] [-WaitForImportCompletion <SwitchParameter>] [-WhatIf <SwitchParameter>] [-CopySettings <CopySettings>] [-MappingSettings <MappingSettings>] [-TaskName <String>]
Copy-Content -Template <PropertyTemplate> -SourceList <List> -DestinationList <List> -SourceFilePath <Uri[]> [-SourceFolder <Uri>] [-DestinationFolder <Uri>] [-NormalMode <SwitchParameter>] [-WaitForImportCompletion <SwitchParameter>] [-WhatIf <SwitchParameter>] [-CopySettings <CopySettings>] [-MappingSettings <MappingSettings>] [-TaskName <String>]
Copy-Content -Template <PropertyTemplate> -SourceList <List> -SourceItemId <Int32[]> -DestinationList <List> [-DestinationFolder <Uri>] [-NormalMode <SwitchParameter>] [-WaitForImportCompletion <SwitchParameter>] [-WhatIf <SwitchParameter>] [-CopySettings <CopySettings>] [-MappingSettings <MappingSettings>] [-TaskName <String>]
You can get the syntax of any command in PowerShell with this script:
Get-Command Copy-Site -SyntaxParameters
Parameters
-CopySettings <CopySettings>
Specifies the copy settings.
Required? | False |
Default value | None |
Accept pipeline input? | True (ByValue, ByPropertyName) |
Accept wildcard characters? | False |
Parameter set name | (All) |
Aliases | None |
-DestinationFolder <Uri>
Specifies the folder path at the destination.
Required? | False |
Default value | None |
Accept pipeline input? | False |
Accept wildcard characters? | False |
Parameter set name | (All) |
Aliases | None |
-DestinationList <List>
Specifies the destination list.
Required? | True |
Default value | None |
Accept pipeline input? | False |
Accept wildcard characters? | False |
Parameter set name | (All) |
Aliases | None |
-ExcelFilePath <String>
Specifies the path of the file used for metadata. Supported formats are Excel and CSV.
Required? | True |
Default value | None |
Accept pipeline input? | False |
Accept wildcard characters? | False |
Parameter set name | TemplateNameExcelFilePath, TemplateExcelFilePath |
Aliases | None |
-MappingSettings <MappingSettings>
Specifies the mapping settings.
Required? | False |
Default value | None |
Accept pipeline input? | False |
Accept wildcard characters? | False |
Parameter set name | (All) |
Aliases | None |
-NormalMode <SwitchParameter>
Specifies that the normal mode should be used.
Note: Insane mode is always used by default in PowerShell.
Required? | False |
Default value | None |
Accept pipeline input? | False |
Accept wildcard characters? | False |
Parameter set name | (All) |
Aliases | None |
-SourceFilePath <Uri[]>
Specifies the source file path.
Required? | True |
Default value | None |
Accept pipeline input? | False |
Accept wildcard characters? | False |
Parameter set name | TemplateNameSourceFilePath, TemplateSourceFilePath |
Aliases | None |
-SourceFolder <Uri>
Specifies the folder path at the source.
Required? | False |
Default value | None |
Accept pipeline input? | False |
Accept wildcard characters? | False |
Parameter set name | Default, TemplateNameSourceFilePath, Template, TemplateSourceFilePath |
Aliases | None |
-SourceItemId <Int32[]>
Specifies the source item id.
Required? | True |
Default value | None |
Accept pipeline input? | False |
Accept wildcard characters? | False |
Parameter set name | TemplateNameSourceItemId, TemplateSourceItemId |
Aliases | None |
-SourceList <List>
Specifies the source list.
Required? | True |
Default value | None |
Accept pipeline input? | True (ByValue, ByPropertyName) |
Accept wildcard characters? | False |
Parameter set name | (All) |
Aliases | None |
-SourceView <String>
Specifies the source view, using the title, the file name or the URL of the view.
Required? | False |
Default value | None |
Accept pipeline input? | False |
Accept wildcard characters? | False |
Parameter set name | Default, Template |
Aliases | None |
-TaskName <String>
Specifies a name for the task.
Required? | False |
Default value | None |
Accept pipeline input? | False |
Accept wildcard characters? | False |
Parameter set name | (All) |
Aliases | None |
-Template <PropertyTemplate>
Specifies the property template. To use the built-in "Full Copy" template, do not specify this parameter.
Required? | True |
Default value | None |
Accept pipeline input? | False |
Accept wildcard characters? | False |
Parameter set name | Template, TemplateExcelFilePath, TemplateSourceFilePath, TemplateSourceItemId |
Aliases | None |
-TemplateName <String>
Specifies the property template to use by its name. You can use Sharegate to configure property templates for the specified list. To use the built-in "Full Copy" template, do not specify this parameter.
Required? | False |
Default value | None |
Accept pipeline input? | False |
Accept wildcard characters? | False |
Parameter set name | Default, TemplateNameExcelFilePath, TemplateNameSourceFilePath, TemplateNameSourceItemId |
Aliases | None |
-WaitForImportCompletion <SwitchParameter>
Specifies that the command will wait for azure insane mode import to be completed.
Required? | False |
Default value | None |
Accept pipeline input? | False |
Accept wildcard characters? | False |
Parameter set name | (All) |
Aliases | None |
-WhatIf <SwitchParameter>
Specifies that a pre-check will be executed instead of a migration.
Required? | False |
Default value | None |
Accept pipeline input? | False |
Accept wildcard characters? | False |
Parameter set name | (All) |
Aliases | None |
Comments
2 comments
I can't find any documented way to use Copy-Content PS script and set the No Version History, like on desktop app. Does the Copy-Content work with the paramter -VersionLimit 0, even if it's not documented here?
Hi,
We added a mention about replicating copy options in the notes at the beginning of this article.
To set options with Copy-Content you must define a Property template. You will find an example in this article: https://support-desktop.sharegate.com/hc/en-us/articles/115000598707.
Please sign in to leave a comment.