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

如何用PnP PowerShell获取SharePoint父文件夹直接子文件夹并遍历内容?

SharePoint Online 获取指定文件夹直接子文件夹并遍历内容解决方案

问题说明

当前你的PnP PowerShell脚本会递归列出文档库内所有层级的文件和文件夹,而需求是:

  • 仅获取Clients主文件夹下的直接子文件夹(不包含多层子文件夹和文件)
  • 遍历每个直接子文件夹,获取其内部所有内容

解决方案脚本

以下是实现需求的完整脚本:

# 配置参数
$SiteURL = "https://*********.sharepoint.com/sites/Clients"
$listName = "Customer Share"
# 主文件夹的站点相对路径,修正原脚本中的拼写错误(Clientss改为Clients)
$mainfolderSiteRelativeUrl = "Customer Share/Clients"

# 连接到SharePoint站点
Connect-PnPOnline -Url $SiteURL -Interactive

# 步骤1:获取Clients主文件夹下的所有直接子文件夹
# -ItemType Folder限定只获取文件夹,-Recurse:$false确保只获取直接子级
$directSubFolders = Get-PnPFolderItem -FolderSiteRelativeUrl $mainfolderSiteRelativeUrl `
                                      -ItemType Folder `
                                      -Recurse:$false `
                                      | Select-Object Id, Name, ServerRelativeUrl

Write-Host "=== Clients主文件夹下的直接子文件夹 ==="
$directSubFolders

# 步骤2:遍历每个直接子文件夹,获取其内部所有内容
foreach ($folder in $directSubFolders) {
    Write-Host "`n=== 遍历子文件夹: $($folder.Name) 内容 ==="
    # 获取当前子文件夹内的所有文件和子文件夹
    $folderContents = Get-PnPFolderItem -FolderSiteRelativeUrl $folder.ServerRelativeUrl `
                                        -ItemType All `
                                        | Select-Object Id, Name, ServerRelativeUrl, FileSystemObjectType
    $folderContents
}

关键说明

  1. 获取直接子文件夹:

    • 使用Get-PnPFolderItem替代Get-PnPListItem,更直接针对文件夹操作
    • -ItemType Folder:仅返回文件夹类型,过滤掉文件
    • -Recurse:$false:禁用递归,只获取当前文件夹的直接子级
  2. 遍历子文件夹内容:

    • 循环每个直接子文件夹,通过ServerRelativeUrl定位目标文件夹
    • -ItemType All:返回该文件夹内的所有文件和子文件夹(可根据需求改为File或Folder)
    • FileSystemObjectType字段可区分当前条目是文件还是文件夹
  3. 路径修正:原脚本中mainfolderUrl存在拼写错误(Clientss),已修正为Clients,确保路径正确

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 10:12:33