SharePoint Online: descargar archivos adjuntos de la lista usando PowerShell
Requisito: Descargar archivos adjuntos de la lista de SharePoint Online.
¿Cómo descargar archivos adjuntos de elementos de la lista de SharePoint?
¿Necesita descargar un archivo adjunto de una lista en Microsoft SharePoint Online? Quizás necesite acceder a todos los documentos que se han almacenado como archivos adjuntos con elementos de la lista o descargar varios archivos adjuntos de un elemento de la lista específico. Cualquiera sea el motivo, la descarga de archivos desde SharePoint se puede realizar en tan solo unos pocos pasos rápidos. Permítame mostrarle la forma más rápida y sencilla de descargar archivos adjuntos de una lista de SharePoint Online.
Para descargar archivos adjuntos de un elemento de la lista en particular, puede abrir el elemento en modo de visualización o edición, hacer clic derecho en cada archivo adjunto y elegir guardar en el menú contextual del navegador. En caso de que desee descargar todos los archivos adjuntos de un elemento de la lista o de todos los elementos de la lista, utilice la función "Asignar unidad de red". Aquí es cómo:
- Vaya al Explorador de Windows (tecla Windows + E), haga clic derecho en "Esta PC" en la vista de árbol de la izquierda y seleccione "Asignar unidad de red".
- Seleccione la unidad, como "Z:" e ingrese la URL de su lista de SharePoint. Por ejemplo, https://intranet.crescent.com/Lists/Credit/.
Esto abre la vista del explorador de Windows con la carpeta de archivos adjuntos. Los archivos adjuntos se organizan en subcarpetas debajo de la carpeta de archivos adjuntos. ¡El ID del elemento de su lista se convierte en el nombre de la subcarpeta! Desde aquí, puede descargar todos los archivos adjuntos simplemente copiándolos y pegándolos en su máquina local.
PowerShell para descargar archivos adjuntos de un elemento de lista:
¿Está buscando automatizar el proceso de descarga de archivos adjuntos a elementos de lista en SharePoint Online? Permítame mostrarle cómo usar PowerShell para descargar archivos adjuntos de una lista de SharePoint Online. Descarguemos mediante programación el archivo adjunto del elemento de la lista de SharePoint desde un elemento de la lista en particular.
#Load SharePoint CSOM Assemblies
Add-Type -Path "C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\16\ISAPI\Microsoft.SharePoint.Client.dll"
Add-Type -Path "C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\16\ISAPI\Microsoft.SharePoint.Client.Runtime.dll"
Function Download-ListItemAttachments()
{
param
(
[Parameter(Mandatory=$true)] [string] $SiteURL,
[Parameter(Mandatory=$true)] [string] $ListName,
[Parameter(Mandatory=$true)] [string] $ListItemID,
[Parameter(Mandatory=$true)] [string] $DownloadPath
)
Try {
#Setup Credentials to connect
$Cred = Get-Credential
$Cred = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($Cred.UserName,$Cred.Password)
#Setup the context
$Ctx = New-Object Microsoft.SharePoint.Client.ClientContext($SiteURL)
$Ctx.Credentials = $Cred
#Get the List Item
$List = $Ctx.Web.Lists.GetByTitle($ListName)
$ListItem= $List.GetItemByID($ListItemID)
#Get All attachments from the List Item
$AttachmentsColl = $ListItem.AttachmentFiles
$Ctx.Load($AttachmentsColl)
$Ctx.ExecuteQuery()
#Get each attachment
ForEach($Attachment in $AttachmentsColl)
{
#Download attachment
$FileContent = [Microsoft.SharePoint.Client.File]::OpenBinaryDirect($Ctx, $Attachment.ServerRelativeUrl)
$FileStream = [System.IO.File]::Create($DownloadPath+$Attachment.FileName)
$FileContent.Stream.CopyTo($FileStream)
$FileStream.Close()
}
write-host -f Green "Total List Attachments Downloaded : $($AttachmentsColl.count)"
}
Catch {
write-host -f Red "Error Downloading List Item Attachments!" $_.Exception.Message
}
}
#Set Parameters
$SiteURL= "https://crescent.sharepoint.com/"
$ListName="Projects"
$ListItemID="1"
$DownloadPath="C:\Temp\"
#Call the function to copy list items
Download-ListItemAttachments -SiteURL $SiteURL -ListName $ListName -ListItemID $ListItemID -DownloadPath $DownloadPath
Descargar archivos adjuntos de todos los elementos de la lista usando PowerShell:
Aquí está el PowerShell para descargar archivos adjuntos de la lista de SharePoint Online de todos los elementos.
#Load SharePoint CSOM Assemblies
Add-Type -Path "C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\16\ISAPI\Microsoft.SharePoint.Client.dll"
Add-Type -Path "C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\16\ISAPI\Microsoft.SharePoint.Client.Runtime.dll"
Function Download-ListAttachments()
{
param
(
[Parameter(Mandatory=$true)] [string] $SiteURL,
[Parameter(Mandatory=$true)] [string] $ListName,
[Parameter(Mandatory=$true)] [string] $DownloadDirectory
)
Try {
#Setup Credentials to connect
$Cred = Get-Credential
$Cred = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($Cred.UserName,$Cred.Password)
#Setup the context
$Ctx = New-Object Microsoft.SharePoint.Client.ClientContext($SiteURL)
$Ctx.Credentials = $Cred
#Get All Items from the List
$List = $Ctx.Web.Lists.GetByTitle($ListName)
$ListItems = $List.GetItems([Microsoft.SharePoint.Client.CamlQuery]::CreateAllItemsQuery())
$Ctx.Load($ListItems)
$Ctx.ExecuteQuery()
#Create download directory if it doesn't exist
If (!(Test-Path -path $DownloadDirectory))
{
New-Item $DownloadDirectory -type directory
}
#Iterate through each list item
Foreach($Item in $ListItems)
{
#Get All attachments from the List Item
$AttachmentsColl = $Item.AttachmentFiles
$Ctx.Load($AttachmentsColl)
$Ctx.ExecuteQuery()
#Get attachment for each list item
ForEach($Attachment in $AttachmentsColl)
{
#Download attachment
$FileContent = [Microsoft.SharePoint.Client.File]::OpenBinaryDirect($Ctx, $Attachment.ServerRelativeUrl)
$FileName= $DownloadDirectory+$Item.id.ToString()+"_"+$Attachment.FileName
$FileStream = [System.IO.File]::Create($FileName)
$FileContent.Stream.CopyTo($FileStream)
$FileStream.Close()
}
}
write-host -f Green "List Attachments Downloaded Successfully!"
}
Catch {
write-host -f Red "Error Downloading List Attachments!" $_.Exception.Message
}
}
#Set Parameters
$SiteURL= "https://crescent.sharepoint.com/"
$ListName="Projects"
$DownloadDirectory="C:\Temp\"
#Call the function to copy list items
Download-ListAttachments -SiteURL $SiteURL -ListName $ListName -DownloadDirectory $DownloadDirectory
SharePoint Online: descargar archivos adjuntos del elemento de la lista usando PnP PowerShell
Este PowerShell descarga todos los archivos adjuntos de un elemento de lista determinado.
#Set Parameters
$SiteURL = "https://crescent.sharepoint.com/sites/Projects"
$ListName = "Docs"
$ItemID = "1"
$DownloadPath = "C:\Temp\"
#Connect to SharePoint Online site
Connect-PnPOnline -Url $SiteURL -Interactive
#Get the List Item
$Listitem = Get-PnPListItem -List $ListName -Id $ItemID
#Get Attachments from List Item
$Attachments = Get-PnPProperty -ClientObject $Listitem -Property "AttachmentFiles"
#Download All Attachments from List item
Write-host "Total Number of Attachments Found:"$Attachments.Count
$Attachments | ForEach-Object {
Get-PnPFile -Url $_.ServerRelativeUrl -FileName $_.FileName -Path $DownloadPath -AsFile
}
Descargar archivos adjuntos de la lista de SharePoint Online usando PnP PowerShell
Descarguemos todos los archivos adjuntos de una lista. Este script crea una carpeta para cada elemento de la lista y descarga todos los archivos adjuntos de ella.
#Set Parameters
$SiteURL = "https://crescent.sharepoint.com/sites/Projects"
$ListName = "Project Docs"
$DownloadPath = "C:\Temp\"
#Connect to SharePoint Online site
Connect-PnPOnline -Url $SiteURL -Interactive
#Get all List Items
$Listitems = Get-PnPListItem -List $ListName -PageSize 500
#Iterate through List Items
ForEach($Item in $Listitems)
{
#Get Attachments from List Item
$Attachments = Get-PnPProperty -ClientObject $Item -Property "AttachmentFiles"
#Download All Attachments from List item
Write-host "Downloading Attachments from List item '$($Item.ID)', Attachments Found: $($Attachments.Count)"
#Create directory for each list item
$DownloadLocation = $DownloadPath+$Item.ID
If (!(Test-Path -path $DownloadLocation)) { New-Item $DownloadLocation -type Directory | Out-Null }
$Attachments | ForEach-Object {
Get-PnPFile -Url $_.ServerRelativeUrl -FileName $_.FileName -Path $DownloadLocation -AsFile -Force
}
}
Esto extrae todos los archivos adjuntos de todos los elementos de la lista al disco local.
En resumen, analizamos varios métodos para descargar archivos adjuntos de una lista de SharePoint Online. Descargar archivos adjuntos de una lista de SharePoint Online es una forma útil de extraer archivos importantes de su lista de SharePoint para realizar copias de seguridad u otros fines. Si sigue los pasos descritos en esta guía, podrá extraer rápida y fácilmente archivos importantes de su lista de SharePoint para realizar copias de seguridad u otros fines.
