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
}
