Download All Versions of a Document in SharePoint using PowerShell - Web Services
Requirement:
Wanted to extract and download each version of the document stored in a SharePoint library. Well, PowerShell can do it from client side using web services. Here is the PowerShell script to download each version to the local folder programmatically.
Download all versions of a document using PowerShell
Wanted to extract and download each version of the document stored in a SharePoint library. Well, PowerShell can do it from client side using web services. Here is the PowerShell script to download each version to the local folder programmatically.
Download all versions of a document using PowerShell
# ******* Variables Section ****************** #Define these variables $WebURL="http://sharepoint.crescent.com/sites/Operations/" $FilePath ="http://sharepoint.crescent.com/sites/Operations/docs/designDoc.docx" $TargetFolder = "C:\Downloads" # ********************************************* #Web Service URL $WebServiceURL =$WebURL+"_vti_bin/Versions.asmx" $WebService = New-WebServiceProxy -Uri $WebServiceURL -UseDefaultCredential $WebService.URL=$WebServiceURL #Get File name from file path $FileName = $FilePath.Substring($FilePath.LastIndexOf("/")+1,($FilePath.Length-$FilePath.LastIndexOf("/")-1)) #Create the Target Library if it doesn't exists if (!(Test-Path -path $TargetFolder)) { #If it doesn't exists, Create $TargetFolder = New-Item $TargetFolder -type directory } #Call web service method "GetVersions" to retrieve versions collection $FileVersions = $WebService.GetVersions($FilePath).Result foreach($File in $FileVersions) { #Frame the File name : E.g. 1.0_Filename.ext $VersionFileName = "$($TargetFolder)\$($File.version)_$($FileName)" write-host $VersionFileName $webclient = New-Object System.Net.WebClient $webclient.UseDefaultCredentials = $true write-host $File.url $webclient.DownloadFile($File.url,$VersionFileName) Write-Host "Downloaded version: $($File.Version)" }Here is how the output looks like:
I was receiving 401 unauthorized error so I changed default credential to following and it worked perfectly.
ReplyDelete$Credential = New-Object System.Management.Automation.PSCredential('BC\smuhammad',(Read-Host "Enter Password" -AsSecureString))
$WebService = New-WebServiceProxy -Uri $WebServiceURL -Credential $Credential
$webclient.Credentials = $Credential
Yes, If the account runs the script doesn't have access, You should supply it!
Delete