SharePoint Online: Move a File between Document Libraries using PowerShell
Requirement: SharePoint Online PowerShell to Move files from one library to another.
How to Move a File in SharePoint Online Document Library?
Here is how to move files between document libraries in SharePoint Online:
Move SharePoint Online Files with PowerShell
Here is the SharePoint Online PowerShell to move documents
PowerShell to Move Files between Document Libraries of the Same Site:
You can use this PowerShell in SharePoint Online to move files to another library in a site.
PnP PowerShell to Move a File in SharePoint Online
Here is the PnP PowerShell to move files between folders in SharePoint Online:
If you want to move all files between folders, use: SharePoint Online: Move All Files from One Folder to Another using PowerShell
How to Move a File in SharePoint Online Document Library?
Here is how to move files between document libraries in SharePoint Online:
- Navigate to your SharePoint Online document library. Select the file to move >> Click on "Move To" in the toolbar.(Right Click on a document and choose "Move To" does the same thing)
- This opens information panel in the right. Select the target library to which your file needs to be moved. You can select any folder in current library, any other library in the current site or even a library in any different site collections.
- Pick the target location to move the document and click on "Move Here" button to start moving the file.
Move SharePoint Online Files with PowerShell
Here is the SharePoint Online PowerShell to move documents
#Load SharePoint CSOM Assemblies Add-Type -Path "C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\16\ISAPI\Microsoft.SharePoint.Client.dll" Add-Type -Path "C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\16\ISAPI\Microsoft.SharePoint.Client.Runtime.dll" #Function to Move a File Function Move-SPOFile([String]$SiteURL, [String]$SourceFileURL, [String]$TargetFileURL) { Try{ #Setup the context $Ctx = New-Object Microsoft.SharePoint.Client.ClientContext($SiteURL) $Ctx.Credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($Cred.Username, $Cred.Password) #sharepoint online powershell to move files $MoveCopyOpt = New-Object Microsoft.SharePoint.Client.MoveCopyOptions $Overwrite = $True [Microsoft.SharePoint.Client.MoveCopyUtil]::MoveFile($Ctx, $SourceFileURL, $TargetFileURL, $Overwrite, $MoveCopyOpt) $Ctx.ExecuteQuery() Write-host -f Green "File Moved Successfully!" } Catch { write-host -f Red "Error Moving the File!" $_.Exception.Message } } #Set Config Parameters $SiteURL="https://crescenttech.sharepoint.com/sites/Marketing" $SourceFileURL="https://crescenttech.sharepoint.com/sites/Marketing/Shared Documents/Discloser Asia.doc" $TargetFileURL="https://crescenttech.sharepoint.com/Shared Documents/Discloser Asia.doc" #Get Credentials to connect $Cred= Get-Credential #Call the function to Move the File Move-SPOFile $SiteURL $SourceFileURL $TargetFileURLThis PowerShell can be used to move file to another library or move files between site collections even.
PowerShell to Move Files between Document Libraries of the Same Site:
You can use this PowerShell in SharePoint Online to move files to another library in a site.
#Load SharePoint CSOM Assemblies Add-Type -Path "C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\16\ISAPI\Microsoft.SharePoint.Client.dll" Add-Type -Path "C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\16\ISAPI\Microsoft.SharePoint.Client.Runtime.dll" $SiteURL="https://crescent.sharepoint.com" $FileURL="/Project Documents/Active Users.xlsx" #Relative Path to the source $DestFileURL="https://crescent.sharepoint.com/Project Docs/Active.xlsx" #Setup Credentials to connect $Cred= Get-Credential $Credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($Cred.Username, $Cred.Password) #Setup the context $Ctx = New-Object Microsoft.SharePoint.Client.ClientContext($SiteURL) $Ctx.Credentials = $Credentials #Get the File $File = $Ctx.Web.GetFileByServerRelativeUrl($FileURL) #sharepoint online powershell move documents $File.MoveTo($DestFileURL, [Microsoft.SharePoint.Client.MoveOperations]::Overwrite) $Ctx.ExecuteQuery()
PnP PowerShell to Move a File in SharePoint Online
Here is the PnP PowerShell to move files between folders in SharePoint Online:
#Config Variables $SiteURL = "https://crescenttech.sharepoint.com/sites/marketing" $SourceURL= "Shared Documents/Recipient KSA.pdf" $TargetURL = "Shared Documents/Active/Recipient KSA.pdf" #Connect to PnP Online Connect-PnPOnline -Url $SiteURL -Credentials (Get-Credential) #move files in sharepoint online using powershell Move-PnPFile -SiteRelativeUrl $SourceURL -TargetUrl $TargetURL -ForceSimilarly, you can move file to another library or move a file between site collections as well. Please note, If the file name specified in Target URL already exists, it won't perform the move. Use -OverwriteIfAlreadyExists to overwrite!
If you want to move all files between folders, use: SharePoint Online: Move All Files from One Folder to Another using PowerShell
What if you want to move more than one document? You have to explicitly call out each file?
ReplyDeleteCall the "Move-SPOFile" function twice as in the First script with different parameters!
DeleteHi Saludeen!
ReplyDeleteThank you for so many useful tricks!! A couple of questions:
1. The .MoveCopyUtil]::MoveFile creates the file in the destination as "new" (newly Created and LastModified fields) ... is there a way to preserve this information?
2. The Move-PnPFile cmdlet is not moving files across sites as per today (it errs out) do you know anything about it?