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

PowerShell调用MS Graph API为SharePoint共享链接授权失败求助

SharePoint文件夹共享链接权限授予问题

我正在开发PowerShell脚本,用于为SharePoint文件夹生成共享链接并为特定用户授予权限。目前已成功创建共享链接,但执行授权函数时失败。以下是相关代码、报错信息及应用权限截图,求解决思路。

创建共享链接函数

该函数返回共享链接URL和共享链接ID:

function CreateSharingLink($folderID)
{
       $Uri = "https://graph.microsoft.com/v1.0/drives/$($drivdeId)/items/$($folderID)/createLink"

       $params = @{"type"="view";
                   "scope"="users"
                  }

       $response= Invoke-MgGraphRequest -Uri $Uri -Method Post -Body $params

       write-host ($response | ConvertTo-Json)

       return $response.link.webUrl, $response.id
}

为特定用户授予权限函数(执行失败)

sharedDriveItemId为创建链接函数返回的ID:

function GivePermissionToSharingLink($userEmail, $sharedDriveItemId)
{
     $params = @{
                  Recipients = @(
                       @{
                            Email = $userEmail
                        }
                  )
                  Roles = @(
                         "read"
                  )
        } 

        $response = Grant-MgSharePermission -SharedDriveItemId $sharedDriveItemId -BodyParameter $params

}

报错信息

报错信息:找不到指定的共享资源

应用权限配置

应用权限配置截图


解决思路

  • 修正SharedDriveItemId参数:createLink返回的response.id是DriveItem本身的ID,并非Grant-MgSharePermission所需的共享资源ID。需要从createLink的响应中提取response.shareId(格式通常为u!aHR0c...),将其作为SharedDriveItemId传入授权函数。如果直接使用shareId无效,可先调用GET /shares/{shareId}获取共享资源的正式ID再传入。
  • 验证权限有效性:确认应用已获得Files.ReadWrite.All和Sites.ReadWrite.All的管理员同意权限,且权限已生效(部分场景下权限授予后需等待数分钟)。
  • 替换调用方式排查:若Grant-MgSharePermission cmdlet存在问题,可尝试用Invoke-MgGraphRequest直接调用Graph API接口:POST https://graph.microsoft.com/v1.0/shares/{sharedDriveItemId}/permissions,传入相同参数,查看是否返回更详细的错误提示。
  • 检查用户邮箱格式:确保传入的userEmail是有效的Azure AD用户邮箱,无拼写错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 08:55:19