当前位置:网站首页 > 更多 > 玩电脑 > 正文

[玩转系统] SharePoint Online:使用 PowerShell 从列表下载附件

作者:精品下载站 日期:2024-12-14 21:06:54 浏览:14 分类:玩电脑

SharePoint Online:使用 PowerShell 从列表下载附件


要求:从 SharePoint Online 列表下载附件。

如何从 SharePoint 列表项下载附件?

您是否需要从 Microsoft SharePoint Online 中的列表下载附件?也许您需要访问已存储为列表项附件的所有文档,或从特定列表项下载多个附件。无论出于何种原因,只需几个快速步骤即可从 SharePoint 下载文件。让我向您展示从 SharePoint Online 列表下载附件的最快、最简单的方法。

要下载特定列表项的附件,您可以在查看或编辑模式下打开该项目,右键单击每个附件,然后从浏览器上下文菜单中选择保存。如果您想下载一个列表项或所有列表项中的所有附件,请使用“映射网络驱动器”功能。具体方法如下:

  1. 转到 Windows 资源管理器(Windows 键 + E),右键单击左侧树视图中的“此电脑”,然后选择“映射网络驱动器”。
  2. 选择驱动器,例如“Z:”,然后输入 SharePoint 列表的 URL。例如,https://intranet.crescent.com/Lists/Credit/。
  3. 这将打开带有附件文件夹的 Windows 资源管理器视图。附件通过附件文件夹下的子文件夹进行组织。您的列表项 ID 将成为子文件夹的名称!从这里,您只需将所有附件复制粘贴到本地计算机即可下载它们。

    [玩转系统] SharePoint Online:使用 PowerShell 从列表下载附件

PowerShell 从列表项下载附件:

您是否希望自动下载附加到 SharePoint Online 中的列表项的文件的过程?让我向您展示如何使用 PowerShell 从 SharePoint Online 列表下载附件。让我们以编程方式从特定列表项下载 SharePoint 列表项附件。


#Load SharePoint CSOM Assemblies
Add-Type -Path "C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\ISAPI\Microsoft.SharePoint.Client.dll"
Add-Type -Path "C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\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

使用 PowerShell 从列表中的所有项目下载附件:

以下是用于从所有项目下载 SharePoint Online 列表附件的 PowerShell。


#Load SharePoint CSOM Assemblies
Add-Type -Path "C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\ISAPI\Microsoft.SharePoint.Client.dll"
Add-Type -Path "C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\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:使用 PnP PowerShell 从列表项下载附件

此 PowerShell 从给定列表项下载所有附件。


#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 
}

使用 PnP PowerShell 从 SharePoint Online 列表下载附件

让我们从列表中下载所有附件。此脚本为每个列表项创建一个文件夹并从中下载所有附件。


#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
    }
}

这会将所有列表项中的所有附件提取到本地磁盘。

总之,我们讨论了从 SharePoint Online 列表下载附件的各种方法。从 SharePoint Online 列表下载附件是从 SharePoint 列表中提取重要文件以进行备份或其他目的的有用方法。通过遵循本指南中概述的步骤,您可以快速轻松地从 SharePoint 列表中提取重要文件以用于备份或其他目的。

您需要 登录账户 后才能发表评论

取消回复欢迎 发表评论:

关灯