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

PnP PowerShell权限支持取消后,如何为用户分配SharePoint站点权限?

替代方案:为用户/ Azure AD应用分配SharePoint站点权限

此前使用的PnP PowerShell Grant-PnPAzureADAppSitePermission 功能已被移除,结合你当前正在使用Microsoft Graph API的场景,以下是两种可靠的替代方案:

方案1:使用Microsoft Graph API直接操作

该方案可同时支持给特定用户或Azure AD应用分配站点权限,且与你现有Graph API工作流无缝兼容。

前提条件

调用API的主体(如你的应用)需具备对应权限:

  • 分配用户权限:需 Sites.Manage.All 或 Sites.FullControl.All 权限(需管理员同意)
  • 分配应用权限:需 Sites.Manage.All 或 Sites.FullControl.All 权限(需管理员同意)

1. 为特定用户分配站点权限

调用 POST /sites/{site-id}/permissions 端点,示例请求:

POST https://graph.microsoft.com/v1.0/sites/{site-id}/permissions
Content-Type: application/json

{
  "roles": ["write"], // 可替换为read、fullcontrol等权限角色
  "grantedToIdentities": [
    {
      "user": {
        "id": "{user_id}",
        "displayName": "{user_name}"
      }
    }
  ]
}

注:{site-id} 可直接使用站点完整URL(如 https://mydomain.sharepoint.com/sites/appname),无需转换为内部ID。

2. 为Azure AD应用分配站点权限

请求示例:

POST https://graph.microsoft.com/v1.0/sites/{site-id}/permissions
Content-Type: application/json

{
  "roles": ["write"],
  "grantedToIdentities": [
    {
      "application": {
        "id": "{client_id}",
        "displayName": "{app_name}"
      }
    }
  ]
}

方案2:使用Microsoft Graph PowerShell模块

若你偏好PowerShell操作,可使用Microsoft Graph PowerShell模块替代旧版PnP命令:

步骤1:安装并连接Graph模块

# 安装模块(首次使用)
Install-Module Microsoft.Graph -Scope CurrentUser -Force
# 连接Graph,请求必要权限
Connect-MgGraph -Scopes "Sites.Manage.All"

步骤2:为特定用户分配站点权限

# 定义参数
$siteUrl = "https://mydomain.sharepoint.com/sites/appname"
$userId = "{user_id}"
$userDisplayName = "{user_name}"
$permissionRole = "write"

# 获取站点ID(或直接使用URL作为SiteId参数)
$site = Get-MgSite -Filter "webUrl eq '$siteUrl'"
$siteId = $site.Id

# 创建权限请求体
$permissionBody = @{
    Roles = @($permissionRole)
    GrantedToIdentities = @(
        @{
            User = @{
                Id = $userId
                DisplayName = $userDisplayName
            }
        }
    )
}

# 执行权限分配
New-MgSitePermission -SiteId $siteId -BodyParameter $permissionBody

步骤3:为Azure AD应用分配站点权限

# 定义参数
$siteUrl = "https://mydomain.sharepoint.com/sites/appname"
$appId = "{client_id}"
$appDisplayName = "{app_name}"
$permissionRole = "write"

$site = Get-MgSite -Filter "webUrl eq '$siteUrl'"
$siteId = $site.Id

$permissionBody = @{
    Roles = @($permissionRole)
    GrantedToIdentities = @(
        @{
            Application = @{
                Id = $appId
                DisplayName = $appDisplayName
            }
        }
    )
}

New-MgSitePermission -SiteId $siteId -BodyParameter $permissionBody

验证权限分配结果

可通过以下方式验证权限是否生效:

# 查看指定站点的所有权限
Get-MgSitePermission -SiteId $siteId

内容的提问来源于stack exchange,提问作者Pooja Parmar

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 22:43:15