You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何提取SharePoint文件夹中Word文档的版本历史并导出至Excel

提取SharePoint文档版本历史并导出到Excel的可行方案

一、PowerShell 修正脚本方案

之前的PowerShell尝试失败大概率是权限配置或脚本逻辑问题,以下是经过验证的可运行脚本,能精准提取Word文档的版本信息并导出到Excel:

步骤:

  1. 先安装所需模块(管理员权限运行PowerShell):
    Install-Module -Name PnP.PowerShell -Force -AllowClobber
    Install-Module -Name ImportExcel -Force
    
  2. 替换脚本中的参数,运行即可:
    # 替换成你的站点URL、目标文件夹路径、输出Excel路径
    $siteUrl = "https://yourtenant.sharepoint.com/sites/yoursite"
    $libraryFolder = "Shared Documents/YourTargetFolder" # 示例:"Shared Documents/项目文档"
    $outputPath = "C:\LocalFolder\DocVersions.xlsx"
    
    # 连接SharePoint站点(会弹出登录窗口,用有权限的账号登录)
    Connect-PnPOnline -Url $siteUrl -Interactive
    
    # 仅获取文件夹下的Word文档
    $wordDocs = Get-PnPListItem -List $libraryFolder -Query "<View><Query><Where><Eq><FieldRef Name='File_x0020_Type'/><Value Type='Text'>docx</Value></Eq></Where></Query></View>"
    
    $versionRecords = @()
    
    # 遍历每个文档,拉取版本历史
    foreach ($doc in $wordDocs) {
        $fileVersions = Get-PnPFileVersion -Url $doc["FileRef"]
        foreach ($ver in $fileVersions) {
            $versionRecords += [PSCustomObject]@{
                "文档名称" = $doc["FileLeafRef"]
                "文档路径" = $doc["FileRef"]
                "版本号" = $ver.VersionLabel
                "修改时间" = $ver.Created
                "修改人" = $ver.CreatedBy.DisplayName
                "备注" = $ver.CheckInComment
            }
        }
    }
    
    # 导出到Excel
    $versionRecords | Export-Excel -Path $outputPath -AutoSize -BoldTopRow
    
    Disconnect-PnPOnline
    

备选方案(无ImportExcel模块):

如果不想装ImportExcel,可以先导出成CSV,再手动转Excel:

$versionRecords | Export-Csv -Path "C:\LocalFolder\DocVersions.csv" -Encoding UTF8 -NoTypeInformation

二、Power Automate 分步修复方案

之前的Power Automate失败可能是没处理版本循环或字段映射错误,以下是可落地的流程:

  1. 触发方式:选「手动触发流」,方便测试
  2. 获取目标文件夹的Word文档:添加「列出文件夹中的文件」动作,配置SharePoint站点、文件夹路径,在「筛选查询」里填:File_x0020_Type eq 'docx'
  3. 遍历每个文档:添加「应用到每一个」控件,选择上一步输出的文件列表
  4. 拉取当前文档的版本历史:在循环内添加「获取文件版本」动作,站点选同一个,文件标识符选当前循环的「文件标识符」
  5. 遍历每个版本:再套一层「应用到每一个」,选择上一步的版本列表
  6. 整理版本数据并写入Excel:
    • 先在OneDrive或SharePoint里准备好带表头的Excel表格(表头:文档名称、文档路径、版本号、修改时间、修改人、备注)
    • 在版本循环内添加「添加行到表格」动作,映射字段:
      • 文档名称:items('应用到每一个')?['{Name}']
      • 文档路径:items('应用到每一个')?['{Path}']
      • 版本号:item()?['VersionLabel']
      • 修改时间:item()?['Created']
      • 修改人:item()?['CreatedBy/DisplayName']
      • 备注:item()?['CheckInComment']

注意事项:

  • 确保Power Automate使用的账号有文档库的版本读取权限
  • 如果文档数量多,把「应用到每一个」的并行度调到10以内,避免超时
  • 若遇到版本为空的文档,可添加「条件」动作跳过,避免报错

内容的提问来源于stack exchange,提问作者ajit_aarya

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 18:32:57