Búsqueda de sitios web

SharePoint Online: descargue varios archivos desde un CSV usando PowerShell


Requisito: Descargar todos los archivos desde un archivo CSV en SharePoint Online.

Script de PowerShell para descargar de forma masiva todos los archivos desde un CSV en SharePoint Online

Cuando tiene una gran cantidad de archivos para descargar desde sitios de SharePoint Online, puede automatizar el proceso usando CSV y PowerShell. En esta publicación de blog, lo guiaremos a través del proceso de descarga de varios archivos desde un sitio de SharePoint Online. Usaremos un archivo CSV como fuente para la descarga y usaremos PowerShell para descargar archivos desde SharePoint Online.

Tengo varios archivos en Excel y quería descargarlos todos a mi máquina local. Aquí está mi archivo CSV: un archivo de texto separado por tabulaciones (¡porque los nombres de los archivos pueden tener comas y el CSV se romperá!)

Este script de PowerShell descarga todos los archivos de un sitio de SharePoint Online determinado. Crea un archivo de registro de todos los posibles errores, por ejemplo, ¡el archivo no existe en el sitio!


#Parameters
$SiteURL = "https://crescent.sharepoint.com/sites/KPMG"
$CSVFile = "C:\Temp\KPMG.txt" #Tab Separated file
$DownloadPath = "C:\Temp\KPMG"
$LogFile = "C:\Temp\Error.log"

 Try {
    #Get Data from CSV File
    $CSVData = Import-CSV -path $CSVFile -Encoding UTF8 -Delimiter "`t"

    #Connect to PnP Online
    Connect-PnPOnline -Url $SiteUrl -UseWebLogin

    #Iterate through each Row in the CSV
    foreach ($Row in $CSVData)
    {
        #Prepare the Local Folder
        $FileDownloadPath = $DownloadPath + $Row.ServerRelativeURL.Replace("/","\")
        $FileName = Split-Path $FileDownloadPath -leaf
        $ParentFolder = Split-Path $FileDownloadPath -Parent

        #Create the Target Folder if it doesn't exists
        If(!(test-path $ParentFolder))
        {
              New-Item -ItemType Directory -Force -Path $ParentFolder | Out-Null
        }

        Try { 
            Get-PnPFile -Url $Row.ServerRelativeURL -Path $ParentFolder -AsFile -ErrorAction Stop
            Write-host "Downloaded File" $Row.ServerRelativeURL
         }
        Catch {
            write-host -f Red "Error Downloading File $($Row.ServerRelativeURL) :" $_.Exception.Message
            $Row.ServerRelativeURL | Out-File $LogFile -Append
        }
    }
}
Catch {
    write-host -f Red "Error:" $_.Exception.Message
}

Artículos relacionados