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

[玩转系统] 如何从 SharePoint 网站下载所有文件?

作者:精品下载站 日期:2024-12-14 14:39:49 浏览:17 分类:玩电脑

如何从 SharePoint 网站下载所有文件?


要求:从 SharePoint 网站下载所有文件。

如何下载SharePoint网站中的所有文件?

从 SharePoint 下载所有文件可能是一项艰巨的任务,尤其是当您拥有大量文件和文件夹时。然而,当您需要备份数据或将其移动到另一个平台时,这是一项必要的任务。当您有许多不同的文档库且其中包含文件时,从库中下载所有文件需要花费相当多的时间。幸运的是,有一个简单的方法可以做到这一点!我们来探讨一下如何轻松下载站点的所有文档库:

要从 SharePoint 文档库或文件夹下载所有文件,请使用“资源管理器视图”。

  1. 导航到您的 SharePoint 本地库或 SharePoint Online 库。
  2. 从 SharePoint Online 的“视图”下拉列表中单击“在文件资源管理器中查看”。对于 SharePoint 本地部署,单击“库”选项卡中的“使用资源管理器打开”按钮。
  3. 从“浏览”视图中,您可以将任何列表或库中的所有文档或所有附件下载到本地计算机。

    [玩转系统] 如何从 SharePoint 网站下载所有文件?

  4. 现在,在资源管理器视图中,向上导航一级,您可以通过上下导航到网站、列表或库对象,使用资源管理器视图下载完整的网站或网站集。

    [玩转系统] 如何从 SharePoint 网站下载所有文件?

很简单,呵呵!但是,手动从 SharePoint Online 中的所有库下载所有文档可能是一项艰巨的任务。作为解决方案,PowerShell 是自动化此过程的有效方法。让我们看看如何使用 PowerShell 从 SharePoint Online 中的所有文档库下载所有文档。

在现代图书馆中,您只需选择所有文件并单击“下载”按钮即可从文档库下载所有文件。

使用 PowerShell 从 SharePoint 本地/在线站点下载所有文件:

我们还可以使用 WebDav 方法从 SharePoint 网站或网站集下载所有文件。只需在下面的脚本中设置参数并点击运行即可。此 PowerShell 脚本将所有文件(包括所有库中的文件、文档版本、给定站点及其子站点的列表项附件)复制到提供的本地磁盘路径。顺便说一句,您可能必须登录一次 SharePoint 服务器站点才能建立会话 cookie!


#Configuration Parameters
$DownloadPath= "c:\Downloads\Online"
#$WebDavUrl = "\intranet.crescent.com\DavWWWRoot\sites\operations"
$webDavUrl = "\crescent.sharepoint.com@SSL\DavWWWRoot\sites\operations" #SharePoint Online

#Create Local Folder it it doesn't exists
If(!(Test-Path $DownloadPath))
{
      New-Item -ItemType Directory -Force -Path $DownloadPath | Out-Null
}

#Get All files from the Site and download to local folder
Get-ChildItem -Path $webDavUrl -Recurse | ForEach-Object {
    #Frame the destination path
    $DestinationPath = Join-Path -Path $DownloadPath -ChildPath (Split-Path $_.FullName -NoQualifier).Replace($webDavUrl,'');

    #Copy File to local path
    Copy-Item $_.FullName -Destination $DestinationPath -Force

    Write-host -f Green File Copied to $DestinationPath
}

此方法适用于 SharePoint 本地和 SharePoint Online。

PnP PowerShell 从 SharePoint Online 站点下载所有文档库

如果您需要从 SharePoint Online 下载所有文档以进行备份、迁移或存档,则手动执行此操作可能是一项繁琐的任务。以下是自动执行此操作的 PowerShell 脚本:


#Function to download a library from SharePoint Online
Function Download-PnPLibrary
{
    [cmdletbinding()]
    param
    (
        [Parameter(Mandatory=$true)][Microsoft.SharePoint.Client.List]$List,
        [Parameter(Mandatory=$true)][string]$DownloadPath
    )
    Try {
        Write-host -f Yellow "Downloading Document Library:"$List.Title
        #Create a Local Folder for the Document Library, if it doesn't exist
        $LibraryFolder = $DownloadPath +"\" +$List.RootFolder.Name
        If (!(Test-Path -Path $LibraryFolder)) {
                New-Item -ItemType Directory -Path $LibraryFolder | Out-Null
        }

        #Get all Items from the Library - with progress bar
        $global:counter = 0
        $ListItems = Get-PnPListItem -List $List -PageSize 500 -Fields ID -ScriptBlock { Param($items) $global:counter += $items.Count; Write-Progress -PercentComplete `
                    ($global:Counter / ($List.ItemCount) * 100) -Activity "Getting Items from Library:" -Status "Processing Items $global:Counter to $($List.ItemCount)";} 
        Write-Progress -Activity "Completed Retrieving Items from Library $($List.Title)" -Completed

        #Get all Subfolders of the library
        $SubFolders = $ListItems | Where {$_.FileSystemObjectType -eq "Folder" -and $_.FieldValues.FileLeafRef -ne "Forms"}
        $SubFolders | ForEach-Object {
            #Ensure All Folders in the Local Path
            $LocalFolderPath = $DownloadPath + ($_.FieldValues.FileRef.Substring($Web.ServerRelativeUrl.Length)) -replace "/","\"
            #Create Local Folder, if it doesn't exist
            If (!(Test-Path -Path $LocalFolderPath)) {
                    New-Item -ItemType Directory -Path $LocalFolderPath | Out-Null
            }
            Write-host -f Green "`tEnsured Folder '$LocalFolderPath'"
        }

        #Get all Files from the folder
        $FilesColl =  $ListItems | Where {$_.FileSystemObjectType -eq "File"}

        #Iterate through each file and download
        $FilesColl | ForEach-Object {
            #Frame the Parameters to download file
            $FileDownloadPath = ($DownloadPath + ($_.FieldValues.FileRef.Substring($Web.ServerRelativeUrl.Length)) -replace "/","\").Replace($_.FieldValues.FileLeafRef,'')
            $FileName = $_.FieldValues.FileLeafRef
            $SourceURL = $_.FieldValues.FileRef
            #Download the File
            Get-PnPFile -ServerRelativeUrl $SourceURL -Path $FileDownloadPath -FileName $FileName -AsFile -force
            Write-host -f Green "`tDownloaded File '$FileName' from '$SourceURL'"
        }
    }
    Catch {
        Write-Host -f Red "Error Downloading Library '$($List.Title)' :"$_.Exception.Message
    }
}

#Parameters
$SiteURL = "https://crescent.sharepoint.com/sites/marketing"
$DownloadPath ="C:\Temp\NewDocs"

#Connect to SharePoint Online
Connect-PnPOnline $SiteURL -Interactive
$Web = Get-PnPWeb

#Exclude certain libraries
$ExcludedLists = @("Form Templates", "Preservation Hold Library","Site Assets", "Pages", "Site Pages", "Images",
                            "Site Collection Documents", "Site Collection Images","Style Library")

#Get all non-hidden document libraries 
$DocumentLibraries = Get-PnPList -Includes RootFolder | Where {$_.BaseType -eq "DocumentLibrary" -and $_.Title -notin $ExcludedLists -and $_.Hidden -eq $False}
       
#Enumerate each library
ForEach($Library in $DocumentLibraries)
{
    Download-PnPLibrary -List $Library -DownloadPath $DownloadPath
}

本文讨论了使用不同的可用方法从 SharePoint Online 下载所有文档。根据您的具体需求,您可以快速轻松地将所有文档从特定库下载到本地计算机。

请参阅我的另一篇文章,使用 PowerShell 从库下载所有文档:PowerShell 从 SharePoint Online 文档库下载所有文件

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

取消回复欢迎 发表评论:

关灯