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

如何让PowerShell脚本对TXT中每个SharePoint Online站点运行

多站点批量导出SharePoint Online文档库文件信息脚本

核心调整说明

针对原单站点脚本的批量适配改动:

  • 移除硬编码的单站点配置,改为从TXT文件读取全量待遍历站点地址
  • 补全原脚本缺失的分页取数逻辑,避免大文件库因未设置分页导致取数不全
  • 增加单站点异常捕获机制,单个站点连接/取数失败不会中断全量批处理流程
  • 所有站点导出结果统一汇总到单个CSV文件,新增站点标识列区分数据归属
  • 每个站点处理完成后自动断开PnP连接,避免会话缓存导致的跨站点访问错误

前置准备

  • 按每行一个站点地址的格式,将待处理站点列表保存为TXT文件,样例格式:

https://mysite.sharepoint.com/sites/site1
https://mysite.sharepoint.com/sites/site2
https://mysite.sharepoint.com/sites/site3

  • 本地需安装最新稳定版PnP PowerShell模块
  • 提前创建C:\Temp目录,避免脚本读写路径不存在报错

完整可运行脚本

# 全局参数配置
$SiteListPath = "C:\Temp\sites.txt"  # 存储站点列表的TXT文件路径
$LibraryName = "Documents"             # 要导出的文档库名称
$ReportOutput = "C:\Temp\SPO_DocLib_AllSites_Export.csv"  # 汇总导出文件路径
$PageSize = 500                       # 分页取数大小

# 初始化清空旧的导出文件
If (Test-Path $ReportOutput) { Remove-Item $ReportOutput -Force }
# 读取全量站点列表,过滤空行
$AllSites = Get-Content $SiteListPath | Where-Object { $_.Trim() -ne "" }

# 遍历每个站点执行导出
foreach ($SiteURL in $AllSites) {
    $SiteURL = $SiteURL.Trim()
    Write-Host "正在处理站点: $SiteURL" -ForegroundColor Cyan
    try {
        # 连接到当前SharePoint站点
        Connect-PnPOnline -Url $SiteURL -UseWebLogin -ErrorAction Stop
        # 分页获取文档库所有条目
        $ListItems = Get-PnPListItem -List $LibraryName `
            -Fields "FileLeafRef", "SMTotalFileStreamSize", "FileDirRef", "Author", "Created", "File_x0020_Type", "FileRef", "Editor" `
            -PageSize $PageSize -Paging -ErrorAction Stop

        # 过滤文件类型的条目,排除文件夹
        $SiteResult = foreach ($Item in $ListItems) {
            If ($Item.FileSystemObjectType -eq "File") {
                [PSCustomObject][ordered]@{
                    SiteURL         = $SiteURL
                    FileName        = $Item["FileLeafRef"]
                    FileType        = $Item["File_x0020_Type"]
                    RootFolder      = $Item["FileDirRef"]
                    RelativeURL     = $Item["FileRef"]
                    FileSizeKB      = [math]::Round($Item["SMTotalFileStreamSize"]/1KB, 2)
                    CreatedBy       = $Item["Author"].Email
                    CreatedOn       = $Item["Created"]
                    ModifiedOn      = $Item["Modified"]
                    ModifiedByEmail = $Item["Editor"].Email
                }
            }
        }
        # 将当前站点结果追加写入汇总CSV
        $SiteResult | Export-Csv -Path $ReportOutput -NoTypeInformation -Append -Encoding UTF8
        Write-Host "站点 $SiteURL 处理完成,共导出 $($SiteResult.Count) 个文件信息" -ForegroundColor Green
    }
    catch {
        Write-Host "站点 $SiteURL 处理失败: $($_.Exception.Message)" -ForegroundColor Red
    }
    finally {
        # 强制断开当前站点连接
        Disconnect-PnPOnline -ErrorAction SilentlyContinue
    }
}
Write-Host "全量站点处理完成,导出文件路径: $ReportOutput" -ForegroundColor Yellow

运行注意事项

  • 运行前需确保当前账号对所有遍历站点有文档库读取权限,无权限的站点会自动跳过并输出错误提示
  • 脚本自动将原脚本的字节级文件大小转换为KB单位,可根据实际需求调整为MB等其他单位
  • 分页取数逻辑可自动绕过SharePoint Online 5000项列表视图阈值限制,适配大体积文档库
  • 导出CSV采用UTF8编码,可避免中文文件名、路径乱码问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.27 04:24:03