Download All Files in a SharePoint Document Library using PowerShell
Requirement: Download all files in document library in SharePoint
Download All Documents in a Library using PowerShell:
Here is the PowerShell to download all files in a document library.
Download All Document Libraries from a SharePoint Site:
How about downloading all files from all document libraries from a SharePoint site?
Download All Documents in a Library using PowerShell:
Here is the PowerShell to download all files in a document library.
Add-PSSnapin Microsoft.SharePoint.PowerShell -ErrorAction SilentlyContinue #Function to Download All Files from a SharePoint Folder Function Download-SPFolder($SPFolderURL, $DownloadPath) { Try { #Get the Source SharePoint Folder $SPFolder = $web.GetFolder($SPFolderURL) $DownloadPath = Join-Path $DownloadPath $SPFolder.Name #Ensure the destination local folder exists! If (!(Test-Path -path $DownloadPath)) { #If it doesn't exists, Create $LocalFolder = New-Item $DownloadPath -type directory } #Loop through each file in the folder and download it to Destination ForEach ($File in $SPFolder.Files) { #Download the file $Data = $File.OpenBinary() $FilePath= Join-Path $DownloadPath $File.Name [System.IO.File]::WriteAllBytes($FilePath, $data) Write-host -f Green "`tDownloaded the File:"$File.ServerRelativeURL } #Process the Sub Folders & Recursively call the function ForEach ($SubFolder in $SPFolder.SubFolders) { If($SubFolder.Name -ne "Forms") #Leave "Forms" Folder { #Call the function Recursively Download-SPFolder $SubFolder $DownloadPath } } } Catch { Write-host -f Red "Error Downloading Document Library:" $_.Exception.Message } } #Main Function Function Download-SPDocumentLibrary($SiteURL, $LibraryName, $DownloadPath) { Try { #Get the Web $Web = Get-SPWeb $SiteURL #Delete any existing files and folders in the download location If (Test-Path $DownloadPath) {Get-ChildItem -Path $DownloadPath -Recurse| ForEach-object {Remove-item -Recurse -path $_.FullName }} #Get the document Library to Download $Library = $Web.Lists[$LibraryName] Write-host -f magenta "Downloading Document Library:" $Library.Title #Call the function to download the document library Download-SPFolder -SPFolderURL $Library.RootFolder.Url -DownloadPath $DownloadPath Write-host -f Green "*** Download Completed ***" } Catch { Write-host -f Red "Error Downloading Document Library:" $_.Exception.Message } } #Runtime-Variables $SiteURL = "https://Intranet.crescent.com/sites/marketing" $LibraryName ="Shared Documents" $DownloadPath ="C:\Downloads\SP2010" #Call the Function to export all document libraries from a site Download-SPDocumentLibrary $SiteURL $LibraryName $DownloadPath
Download All Document Libraries from a SharePoint Site:
How about downloading all files from all document libraries from a SharePoint site?
Add-PSSnapin Microsoft.SharePoint.PowerShell -ErrorAction SilentlyContinue #Function to Download All Files from a SharePoint Folder Function Download-SPFolder($SPFolderURL, $LocalFolderPath) { Try { #Get the Source SharePoint Folder $SPFolder = $global:web.GetFolder($SPFolderURL) $LocalFolderPath = Join-Path $LocalFolderPath $SPFolder.Name #Ensure the destination local folder exists! If (!(Test-Path -path $LocalFolderPath)) { #If it doesn't exists, Create $LocalFolder = New-Item $LocalFolderPath -type directory } #Loop through each file in the folder and download it to Destination ForEach ($File in $SPFolder.Files) { #Download the file $Data = $File.OpenBinary() $FilePath= Join-Path $LocalFolderPath $File.Name [System.IO.File]::WriteAllBytes($FilePath, $data) Write-host -f Green "`tDownloaded File:"$File.ServerRelativeURL } #Process the Sub Folders & Recursively call the function ForEach ($SubFolder in $SPFolder.SubFolders) { If($SubFolder.Name -ne "Forms") #Leave "Forms" Folder { #Call the function Recursively Download-SPFolder $SubFolder $LocalFolderPath } } } Catch { Write-host -f Red "Error Downloading Document Library:" $_.Exception.Message } } #Main Function Function Export-SPLibraries() { Try { #Get the Source Web $global:Web = Get-SPWeb $global:SourceSiteURL #Delete any existing files and folders in the download location If (Test-Path $global:LocalFolderPath) {Get-ChildItem -Path $global:LocalFolderPath -Recurse| ForEach-object {Remove-item -Recurse -path $_.FullName }} #Array to Skip System Libraries $SystemLibraries [email protected]("Pages", "Converted Forms", "Master Page Gallery", "Customized Reports", "Form Templates", "List Template Gallery", "Theme Gallery", "Reporting Templates", "Site Collection Documents", "Site Collection Images", "Site Pages", "Solution Gallery", "Style Library", "Web Part Gallery","Site Assets", "wfpub") #Get all document libraries - Exclude Hidden and System Libraries $LibraryCollection = $Web.lists | Where-Object { ($_.BaseType -eq "DocumentLibrary") -and ($_.hidden -eq $false) -and ($SystemLibraries -notcontains $_.Title)} #Iterate through each list and export ForEach($Library in $LibraryCollection) { Write-host -f magenta "Downloading Document Library:" $Library.Title #Call the function to download the document library Download-SPFolder -SPFolderURL $Library.RootFolder.Url -LocalFolderPath $global:LocalFolderPath } Write-host "*** Download Completed ***" } Catch { Write-host -f Red "Error Downloading Document Library:" $_.Exception.Message } } #region Runtime-Variables $Global:SourceSiteURL = "https://SP2010.crescent.com/sites/marketing" $Global:LocalFolderPath ="C:\Migration\Downloads" #endregion Runtime-Variables #Call the Function to download all document libraries from a site Export-SPLibraries
In SharePoint 2013 I need a way to copy a subset of documents only from a Document Repository to a Temp directory in Explorer, or another SharePoint Library.
ReplyDeleteOr it can based upon a range of dates in a modified view. We are filtering based upon a range of dates on a field named "Begin Date" and "End Date" and want to copy over just the documents based upon the filtered view.