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

[玩转系统] SharePoint Online:使用 PowerShell 下载文档的所有版本

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

SharePoint Online:使用 PowerShell 下载文档的所有版本


要求:使用 PowerShell 在 SharePoint Online 中下载文档的所有版本。

[玩转系统] SharePoint Online:使用 PowerShell 下载文档的所有版本

SharePoint Online:使用 PowerShell 下载文档的所有版本

在 SharePoint Online 中,文档存储在库中,并且随着时间的推移,文档存在多个版本是很常见的。 SharePoint Online 中的版本历史记录允许您在库中存储、跟踪和还原文件发生更改时的情况。有时,您可能需要下载文件的所有先前版本。但是,下载文档的所有版本可能是一个乏味的过程,特别是如果您必须手动执行此操作。为了节省时间和精力,您可以使用 PowerShell 下载 SharePoint Online 中文档的所有版本。

由于从 Web UI 下载文件的每个版本既耗时又麻烦,因此使用 CSOM 从 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"
  
#Parameters
$SiteURL = "https://Crescent.sharepoint.com"
$FileRelativeURL ="/Shared Documents/Discloser China.doc"
$DownloadPath= "C:\Temp"

#Get credentials to connect
$Cred = Get-Credential

#Setup the Context
$Ctx = New-Object Microsoft.SharePoint.Client.ClientContext($SiteURL)
$Ctx.Credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($Cred.UserName, $Cred.Password)
 
#Get the File and its versions
$File = $Ctx.Web.GetFileByServerRelativeUrl($FileRelativeURL)
$Ctx.Load($File)
$Ctx.Load($File.Versions)
$Ctx.ExecuteQuery()
 
If($File.Versions.Count -gt 0)
{
    Foreach($Version in $File.Versions)
    {
        #Frame File Name for the Version
        $VersionFileName = "$($DownloadPath)$($Version.VersionLabel)_$($File.Name)"
        
        #Get Contents of the File Version
        $VersionStream = $Version.OpenBinaryStream()
        $Ctx.ExecuteQuery()

        #Create File version at local disk
        [System.IO.FileStream] $FileStream = [System.IO.File]::Open($VersionFileName,[System.IO.FileMode]::OpenOrCreate)
        $VersionStream.Value.CopyTo($FileStream)
        $FileStream.Close()
        
        Write-Host -f Green "Version $($Version.VersionLabel) Downloaded to :" $VersionFileName
    }
}
Else
{
    Write-host "No Versions Available for "$Item["FileRef"] -f Yellow
}

PnP PowerShell 导出文档的所有版本

让我们使用 PnP PowerShell 从 SharePoint Online 下载文件的所有版本:


#Set Parameters
$SiteURL = "https://crescent.sharepoint.com/sites/Funds"
$FileRelativeURL = "/sites/Funds/Funds/Reporting/External/QR/2019/Q3 2019/Global 4/Global IT Seg v2.xlsx"
$DownloadPath = "C:\Temp"

#Connect to PnP Online
Connect-PnPOnline -Url $SiteURL -Interactive
$Ctx = Get-PnPContext

#Get the File
$File = Get-PnPFile -Url $FileRelativeURL

#Get File Versions
$FileVersions = Get-PnPProperty -ClientObject $File -Property Versions

If($FileVersions.Count -gt 0)
{
    Foreach($Version in $FileVersions)
    {
        #Frame File Name for the Version
        $VersionFileName = "$($DownloadPath)$($Version.VersionLabel)_$($File.Name)"
         
        #Get Contents of the File Version
        $VersionStream = $Version.OpenBinaryStream()
        $Ctx.ExecuteQuery()
 
        #Download File version to local disk
        [System.IO.FileStream] $FileStream = [System.IO.File]::Open($VersionFileName,[System.IO.FileMode]::OpenOrCreate)
        $VersionStream.Value.CopyTo($FileStream)
        $FileStream.Close()
         
        Write-Host -f Green "Version $($Version.VersionLabel) Downloaded to :" $VersionFileName
    }
}
Else
{
    Write-host -f Yellow "No Versions Found!"
}

总之,使用 PowerShell 下载 SharePoint Online 中文档的所有版本是获取对文档所做的每项更改的便捷且高效的方法。使用 PowerShell 脚本,您可以快速检索文档的所有版本,从而更轻松地跟踪更改并保留文档的历史记录。

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

取消回复欢迎 发表评论:

关灯