如何提取SharePoint文件夹中Word文档的版本历史并导出至Excel
一、PowerShell 修正脚本方案
之前的PowerShell尝试失败大概率是权限配置或脚本逻辑问题,以下是经过验证的可运行脚本,能精准提取Word文档的版本信息并导出到Excel:
步骤:
- 先安装所需模块(管理员权限运行PowerShell):
Install-Module -Name PnP.PowerShell -Force -AllowClobber Install-Module -Name ImportExcel -Force - 替换脚本中的参数,运行即可:
# 替换成你的站点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失败可能是没处理版本循环或字段映射错误,以下是可落地的流程:
- 触发方式:选「手动触发流」,方便测试
- 获取目标文件夹的Word文档:添加「列出文件夹中的文件」动作,配置SharePoint站点、文件夹路径,在「筛选查询」里填:
File_x0020_Type eq 'docx' - 遍历每个文档:添加「应用到每一个」控件,选择上一步输出的文件列表
- 拉取当前文档的版本历史:在循环内添加「获取文件版本」动作,站点选同一个,文件标识符选当前循环的「文件标识符」
- 遍历每个版本:再套一层「应用到每一个」,选择上一步的版本列表
- 整理版本数据并写入Excel:
- 先在OneDrive或SharePoint里准备好带表头的Excel表格(表头:文档名称、文档路径、版本号、修改时间、修改人、备注)
- 在版本循环内添加「添加行到表格」动作,映射字段:
- 文档名称:
items('应用到每一个')?['{Name}'] - 文档路径:
items('应用到每一个')?['{Path}'] - 版本号:
item()?['VersionLabel'] - 修改时间:
item()?['Created'] - 修改人:
item()?['CreatedBy/DisplayName'] - 备注:
item()?['CheckInComment']
- 文档名称:
注意事项:
- 确保Power Automate使用的账号有文档库的版本读取权限
- 如果文档数量多,把「应用到每一个」的并行度调到10以内,避免超时
- 若遇到版本为空的文档,可添加「条件」动作跳过,避免报错
内容的提问来源于stack exchange,提问作者ajit_aarya
相关产品推荐
相关产品推荐

