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

[玩转系统] 使用 PowerShell 下载 SharePoint 文档库中的所有文件

作者:精品下载站 日期:2024-12-14 15:01:55 浏览:14 分类:玩电脑

使用 PowerShell 下载 SharePoint 文档库中的所有文件


要求:下载 SharePoint 文档库中的所有文件。

[玩转系统] 使用 PowerShell 下载 SharePoint 文档库中的所有文件

如何从文档库下载所有文件?

SharePoint 文档库是一个中心位置,可以在其中存储和访问与项目或团队相关的所有文件。通常,用户可能需要将 SharePoint 文档库中的所有文件下载到本地系统以进行备份或分析。虽然 SharePoint 提供了下载单个文件的选项,但逐一下载所有文件可能非常耗时。幸运的是,PowerShell 只需几行代码即可下载 SharePoint 文档库中的所有文件。

要下载 SharePoint 文档库中的所有文件,您可以按照以下步骤操作:

  1. 在 SharePoint 中打开要从中下载所有文件的文档库。
  2. 单击最左侧列标题中的复选框以选择库中的所有文件。如果库中有多个页面的文件,您可能需要在每个页面上重复此步骤以选择所有文件。
  3. 单击页面顶部工具栏中的“下载”按钮。

这将从文档库下载所有选定的文件和文件夹。您还可以使用“在资源管理器中打开”选项在 Windows 文件浏览器中打开文档库,并将文件复制粘贴到本地磁盘。

使用 PowerShell 下载库中的所有文档:

希望快速从 SharePoint 文档库下载所有文件?无论您需要存档文档还是只想获得库中所有内容的本地副本,本指南都将向您展示如何使用 PowerShell 从文档库下载所有文档。

下面是用于下载文档库中所有文件的 PowerShell。


Add-PSSnapin Microsoft.SharePoint.PowerShell -ErrorAction SilentlyContinue

#Function to Download All Files from a SharePoint Folder
Function Download-SPFolder($SPFolderURL, $DownloadPath)
{
    Try {
        #Get the Source SharePoint Folder
        $SPFolder = $web.GetFolder($SPFolderURL)
 
        $DownloadPath = Join-Path $DownloadPath $SPFolder.Name 
        #Ensure the destination local folder exists! 
        If (!(Test-Path -path $DownloadPath))
        {    
            #If it doesn't exists, Create
            $LocalFolder = New-Item $DownloadPath -type directory 
        }
 
        #Loop through each file in the folder and download it to Destination
        ForEach ($File in $SPFolder.Files) 
        {
            #Download the file
            $Data = $File.OpenBinary()
            $FilePath= Join-Path $DownloadPath $File.Name
            [System.IO.File]::WriteAllBytes($FilePath, $data)
            Write-host -f Green "`tDownloaded the File:"$File.ServerRelativeURL         
        }
 
        #Process the Sub Folders & Recursively call the function
        ForEach ($SubFolder in $SPFolder.SubFolders)
        {
            If($SubFolder.Name -ne "Forms") #Leave "Forms" Folder
            {
                #Call the function Recursively
                Download-SPFolder $SubFolder $DownloadPath
            }
        }
    }
    Catch {
        Write-host -f Red "Error Downloading Document Library:" $_.Exception.Message
    }  
}

#Main Function
Function Download-SPDocumentLibrary($SiteURL, $LibraryName, $DownloadPath)
{
    Try {
        #Get the  Web
        $Web = Get-SPWeb $SiteURL

        #Delete any existing files and folders in the download location
        If (Test-Path $DownloadPath) {Get-ChildItem -Path $DownloadPath -Recurse| ForEach-object {Remove-item -Recurse -path $_.FullName }}

        #Get the document Library to Download
        $Library = $Web.Lists[$LibraryName]
        Write-host -f magenta "Downloading Document Library:" $Library.Title

         #Call the function to download the document library
        Download-SPFolder -SPFolderURL $Library.RootFolder.Url -DownloadPath $DownloadPath

        Write-host -f Green "*** Download Completed  ***"
    }
    Catch {
        Write-host -f Red "Error Downloading Document Library:" $_.Exception.Message
    }  
}

#Runtime-Variables
$SiteURL = "https://Intranet.crescent.com/sites/marketing"
$LibraryName ="Shared Documents"
$DownloadPath ="C:\Downloads\SP2010"

#Call the Function to export all document libraries from a site
Download-SPDocumentLibrary $SiteURL $LibraryName $DownloadPath

从 SharePoint 网站下载所有文档库:

从 SharePoint 网站下载所有文档库中的所有文件怎么样?


Add-PSSnapin Microsoft.SharePoint.PowerShell -ErrorAction SilentlyContinue

#Function to Download All Files from a SharePoint Folder
Function Download-SPFolder($SPFolderURL, $LocalFolderPath)
{
    Try {
        #Get the Source SharePoint Folder
        $SPFolder = $global:web.GetFolder($SPFolderURL)
 
        $LocalFolderPath = Join-Path $LocalFolderPath $SPFolder.Name 
        #Ensure the destination local folder exists! 
        If (!(Test-Path -path $LocalFolderPath))
        {    
            #If it doesn't exists, Create
            $LocalFolder = New-Item $LocalFolderPath -type directory 
        }
 
        #Loop through each file in the folder and download it to Destination
        ForEach ($File in $SPFolder.Files) 
        {
            #Download the file
            $Data = $File.OpenBinary()
            $FilePath= Join-Path $LocalFolderPath $File.Name
            [System.IO.File]::WriteAllBytes($FilePath, $data)
            Write-host -f Green "`tDownloaded File:"$File.ServerRelativeURL
        }
 
        #Process the Sub Folders & Recursively call the function
        ForEach ($SubFolder in $SPFolder.SubFolders)
        {
            If($SubFolder.Name -ne "Forms") #Leave "Forms" Folder
            {
                #Call the function Recursively
                Download-SPFolder $SubFolder $LocalFolderPath
            }
        }
    }
    Catch {
        Write-host -f Red "Error Downloading Document Library:" $_.Exception.Message
    }  
}

#Main Function
Function Export-SPLibraries()
{
    Try {
        #Get the Source Web
        $global:Web = Get-SPWeb $global:SourceSiteURL

        #Delete any existing files and folders in the download location
        If (Test-Path $global:LocalFolderPath) {Get-ChildItem -Path $global:LocalFolderPath -Recurse| ForEach-object {Remove-item -Recurse -path $_.FullName }}

        #Array to Skip System Libraries
        $SystemLibraries =@("Pages", "Converted Forms", "Master Page Gallery", "Customized Reports", 
                      "Form Templates", "List Template Gallery", "Theme Gallery", "Reporting Templates", 
                          "Site Collection Documents", "Site Collection Images", "Site Pages", "Solution Gallery", 
                               "Style Library", "Web Part Gallery","Site Assets", "wfpub")

        #Get all document libraries - Exclude Hidden and System Libraries
        $LibraryCollection = $Web.lists | Where-Object  { ($_.BaseType -eq "DocumentLibrary") -and ($_.hidden -eq $false) -and ($SystemLibraries -notcontains $_.Title)}

        #Iterate through each list and export
        ForEach($Library in $LibraryCollection)
        {
            Write-host -f magenta "Downloading Document Library:" $Library.Title

            #Call the function to download the document library
            Download-SPFolder -SPFolderURL $Library.RootFolder.Url -LocalFolderPath $global:LocalFolderPath
        } 

        Write-host "*** Download Completed  ***"
    }
    Catch {
        Write-host -f Red "Error Downloading Document Library:" $_.Exception.Message
    }  
}

#region Runtime-Variables
$Global:SourceSiteURL = "https://SP2010.crescent.com/sites/marketing"
$Global:LocalFolderPath ="C:\Migration\Downloads"
#endregion Runtime-Variables

#Call the Function to download all document libraries from a site
Export-SPLibraries

若要从 SharePoint Online 文档库下载所有文件,请使用:SharePoint Online PowerShell 下载文档库

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

取消回复欢迎 发表评论:

关灯