使用Microsoft Graph API及PowerShell SDK为SharePoint文件夹授权失败求助
问题根源分析
你的Graph API POST请求失败,核心原因是请求体字段使用错误:grantedToV2是权限查询响应里的返回字段,并非创建权限时的请求字段。PowerShell命令失败大概率也是因为参数格式不匹配。
修复方案
1. Graph Explorer正确POST请求格式
使用grantedToIdentitiesV2数组指定授权用户,正确请求体如下:
{ "roles": ["read"], "grantedToIdentitiesV2": [ { "user": { "id": "xxxxxxx", "displayName": "xxx xxx" } } ] }
或者用更简洁的recipients字段(无需指定displayName):
{ "roles": ["read"], "recipients": [ { "user": { "id": "xxxxxxx" } } ] }
注意:确保请求URL中的
{site id}和{folder id}完全正确,无拼写或格式错误。
2. PowerShell SDK正确命令格式
使用New-MgDriveItemPermission时,需指定-GrantedToIdentitiesV2参数,示例代码:
# 定义用户身份对象 $userIdentity = @{ User = @{ Id = "xxxxxxx" DisplayName = "xxx xxx" } } # 执行权限授予 New-MgDriveItemPermission ` -DriveId "<站点对应的Drive ID>" ` -DriveItemId "<文件夹ID>" ` -Roles @("read") ` -GrantedToIdentitiesV2 @($userIdentity)
若知道用户的UPN,可通过-Recipients参数简化操作:
$recipient = @{ User = @{ UserPrincipalName = "user@domain.com" } } New-MgDriveItemPermission ` -DriveId "<站点对应的Drive ID>" ` -DriveItemId "<文件夹ID>" ` -Roles @("read") ` -Recipients @($recipient)
3. 必要权限检查
确保当前操作账号(或Graph Explorer授权账号)拥有以下至少一种权限:
Sites.FullControl.AllSites.Manage.AllFiles.ReadWrite.All
在Graph Explorer中,需重新授权并勾选对应权限后再尝试请求。
内容的提问来源于stack exchange,提问作者John Rick
相关产品推荐
相关产品推荐

