使用PowerShell PnP获取SharePoint隐藏文件夹并修改所有者问题
解决隐藏文件夹无法通过Get-PnPFolder获取并修改所有者的问题
方法1:强制获取隐藏文件夹
Get-PnPFolder默认不会返回隐藏文件夹,可通过调整查询参数或CAML查询获取目标文件夹:
# 尝试带Includes参数直接获取 $Folder = Get-PnPFolder -Url $RelativePath_Folder -Includes "ListItemAllFields" # 若上述命令失败,用CAML查询定位文件夹对应的列表项 $targetList = Get-PnPList -Identity "Documents" # 替换为实际文档库名称 $queryXml = "<View Scope='RecursiveAll'><Query><Where><Eq><FieldRef Name='FileLeafRef'/><Value Type='Text'>C2574AA000FC365CC25767A000F9AFE</Value></Eq></Where></Query></View>" $camlQuery = New-PnPCamlQuery -ViewXml $queryXml $folderItems = Get-PnPListItem -List $targetList -Query $camlQuery if ($folderItems.Count -gt 0) { $Folder = Get-PnPFolder -ListItem $folderItems[0] }
方法2:通过REST API直接修改所有者
如果PnP cmdlet仍无法识别文件夹,可调用SP REST API操作:
- 浏览器打开文件夹页面,从URL末尾提取
id参数值(如?id=456中的456,即文件夹对应的ListItem ID) - 执行以下PowerShell命令:
$siteUrl = "https://yourtenant.sharepoint.com/sites/yoursite" # 替换为站点URL $listItemId = "456" # 替换为实际ListItem ID $newOwnerEmail = "targetuser@yourtenant.onmicrosoft.com" # 替换为新所有者邮箱 # 获取目标用户ID $targetUser = Get-PnPUser -Email $newOwnerEmail $userId = $targetUser.Id # 调用REST API更新所有者字段 $apiEndpoint = "$siteUrl/_api/web/lists/getbytitle('Documents')/items($listItemId)" # 替换文档库名称 $requestBody = @{ "__metadata" = @{type = "SP.Data.DocumentsItem"} # 替换为对应列表的实体类型,可通过REST API的metadata端点查询 "AuthorId" = $userId "EditorId" = $userId } | ConvertTo-Json Invoke-PnPSPRestMethod -Url $apiEndpoint -Method Patch -Content $requestBody -ContentType "application/json;odata=verbose"
方法3:浏览器直接修改权限
若PowerShell操作受阻,可直接在浏览器中修改:打开文件夹页面 → 右上角「设置」→「库设置」→「权限管理」→ 找到该文件夹的权限条目,直接修改所有者。
内容的提问来源于stack exchange,提问作者Sailakshmi Panat
相关产品推荐
相关产品推荐

