如何用PnP PowerShell获取SharePoint父文件夹直接子文件夹并遍历内容?
问题说明
当前你的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 }
关键说明
获取直接子文件夹:
- 使用
Get-PnPFolderItem替代Get-PnPListItem,更直接针对文件夹操作 -ItemType Folder:仅返回文件夹类型,过滤掉文件-Recurse:$false:禁用递归,只获取当前文件夹的直接子级
- 使用
遍历子文件夹内容:
- 循环每个直接子文件夹,通过
ServerRelativeUrl定位目标文件夹 -ItemType All:返回该文件夹内的所有文件和子文件夹(可根据需求改为File或Folder)FileSystemObjectType字段可区分当前条目是文件还是文件夹
- 循环每个直接子文件夹,通过
路径修正:原脚本中
mainfolderUrl存在拼写错误(Clientss),已修正为Clients,确保路径正确
内容的提问来源于stack exchange,提问作者microsoftdeveloperdesigner
相关产品推荐
相关产品推荐

