PowerShell调用MS Graph API为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-MgSharePermissioncmdlet存在问题,可尝试用Invoke-MgGraphRequest直接调用Graph API接口:POST https://graph.microsoft.com/v1.0/shares/{sharedDriveItemId}/permissions,传入相同参数,查看是否返回更详细的错误提示。 - 检查用户邮箱格式:确保传入的
userEmail是有效的Azure AD用户邮箱,无拼写错误。
内容的提问来源于stack exchange,提问作者Simon Bross
相关产品推荐
相关产品推荐

