0
votes

We have a csv file with approximately 8,000 SharePoint document file URLs - the files in question they refer to have to be downloaded to a file share location, then deleted from the SharePoint. The files are not located in the same sites, but across several hundred in a server farm. We are looking to remove only the specified files - NOT the entire library.

We have the following script to effect the download, which creates the folder structure so that the downloaded files are separated.

param (
   [Parameter(Mandatory=$True)]
[string]$base = "C:\Export\",
   [Parameter(Mandatory=$True)]
[string]$csvFile = "c:\export.csv"
   )
write-host "Commencing Download"
$date = Get-Date
add-content C:\Export\Log.txt "Commencing Download at $date":
$webclient = New-Object System.Net.WebClient
$webclient.UseDefaultCredentials = $true
$files = (import-csv $csvFile | Where-Object {$_.Name -ne ""})
$line=1
Foreach ($file in $files) {
 $line = $line + 1
   if (($file.SpURL -ne "") -and ($file.path -ne "")) {
    $lastBackslash = $file.SpURL.LastIndexOf("/")
    if ($lastBackslash -ne -1) {
     $fileName = $file.SpURL.substring(1 + $lastBackslash)
      $filePath = $base + $file.path.replace("/", "\")
          New-Item -ItemType Directory -Force -Path $filePath.substring(0, $filePath.length - 1)
      $webclient.DownloadFile($file.SpURL, $filePath + $fileName)
      $url=$file.SpURL
      add-content C:\Export\Log.txt "INFO: Processing line $line in $csvFile, writing $url to     $filePath$fileName"
    } else {
      $host.ui.WriteErrorLine("Exception: URL has no backslash on $line for filename $csvFile")
    }
  } else {
    $host.ui.WriteErrorLine("Exception: URL or Path is empty on line $line for filename $csvFile")
  }
}
write-Host "Download Complete"

Is there a way we could get the versions for each file?

I have been looking for a means to carry out the deletion, using the same csv file as reference - all of the code I have seen refers to deleting entire libraries, which is not desired.

I am very new to PowerShell and am getting lost. Can anyone shed some light?

Many thanks.

1

1 Answers

0
votes

This looks like it might be useful. It's a different approach and would need to be modified to pull in the file list from your CSV but it looks like it generally accomplishes what you are looking to do.

https://sharepoint.stackexchange.com/questions/6511/download-and-delete-documents-using-powershell