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

使用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操作:

  1. 浏览器打开文件夹页面,从URL末尾提取id参数值(如?id=456中的456,即文件夹对应的ListItem ID)
  2. 执行以下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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 09:13:18