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

求PowerShell调用GraphAPI添加/更新B2C用户的示例及参数说明

通过PowerShell调用Graph API在Azure AD B2C中添加/更新用户

我已经在B2C租户中测试过以下获取用户的PowerShell脚本,现在需要了解通过PowerShell调用Graph API添加或更新用户的正确参数用法。查阅微软文档后发现仅提供SDK示例,缺少PowerShell结合REST API的添加/更新用户示例。

原获取用户的脚本:

###############################GraphAPI 连接 @Start
$uri = "https://login.microsoftonline.com/<TenantID>/oauth2/v2.0/token" 

$client_id = "<你的客户端ID>"
$client_secret = "<你的客户端密钥>"

$queryURI = "https://graph.microsoft.com/v1.0/users/<用户ID>"

$scope = "https://graph.microsoft.com/.default"

# 生成请求令牌的请求头
$tokenRequestHeaders = @{ 
    ContentType = "application/x-www-form-urlencoded" 
} 

# 构造获取令牌的请求体
$body = @{
    client_id     = $client_id
    scope         = $scope
    client_secret = $client_secret
    grant_type    = "client_credentials"
}
Write-Host "#### 请求体: " $body

# 发送POST请求获取Bearer令牌
$result = Invoke-RestMethod -Uri $uri -Body $body -Method Post -Headers $tokenRequestHeaders 

Write-Host "#### 令牌结果: "$result
###############################GraphAPI 连接 @End

###############################GraphAPI 获取用户数据
# 构造查询用户的请求头,带上获取到的令牌
$queryHeaders = @{ 
    Authorization = "Bearer $($result.access_token)" 
} 

Write-Host "#### 查询地址: " $queryURI
pause

# 发送GET请求获取用户信息
$queryResult = Invoke-RestMethod -Method Get -Headers $queryHeaders -Uri $queryURI -ContentType "application/json"

$queryResult  

一、添加用户的PowerShell脚本

关键参数说明

  • accountEnabled: 布尔值,控制用户账户是否启用
  • displayName: 用户的显示名称
  • mailNickname: 用户邮件别名,需在租户内唯一
  • userPrincipalName: 用户主体名称,格式为用户名@租户域名.onmicrosoft.com,需在租户内唯一
  • passwordProfile: 包含password(登录密码)和forceChangePasswordNextSignIn(是否强制用户下次登录修改密码)的对象
  • identities: B2C用户的身份标识,支持本地账户(signInType为emailAddress或userName)或第三方社交账户

完整脚本

# 复用上述"GraphAPI 连接"部分的代码,确保已获取有效访问令牌

# 构造添加用户的请求地址
$addUserUri = "https://graph.microsoft.com/v1.0/users"

# 构造添加用户的请求体
$addUserBody = @{
    accountEnabled = $true
    displayName    = "张三"
    mailNickname   = "zhangsan"
    userPrincipalName = "zhangsan@your-b2c-tenant.onmicrosoft.com"
    passwordProfile = @{
        password = "P@ssw0rd123!"
        forceChangePasswordNextSignIn = $false
    }
    identities = @(
        @{
            signInType = "emailAddress"
            issuer = "your-b2c-tenant.onmicrosoft.com"
            issuerAssignedId = "zhangsan@example.com"
        }
    )
} | ConvertTo-Json -Depth 3

# 发送POST请求添加用户
try {
    $addResult = Invoke-RestMethod -Method Post -Headers $queryHeaders -Uri $addUserUri -Body $addUserBody -ContentType "application/json"
    Write-Host "用户添加成功:"
    $addResult
} catch {
    Write-Host "添加用户失败,错误信息:" $_.Exception.Message
}

二、更新用户的PowerShell脚本

关键说明

  • 使用PATCH方法执行更新操作,仅需传入需要修改的字段,无需提交全部用户属性
  • 常见可更新字段:displayName、mailNickname、accountEnabled、passwordProfile(修改密码时使用)等

完整脚本

# 复用上述"GraphAPI 连接"部分的代码,确保已获取有效访问令牌

# 指定要更新的用户ID或用户主体名称
$userId = "<目标用户ID>"
$updateUserUri = "https://graph.microsoft.com/v1.0/users/$userId"

# 构造更新用户的请求体,示例修改显示名称并禁用账户
$updateUserBody = @{
    displayName    = "张三-更新后"
    accountEnabled = $false
} | ConvertTo-Json

# 发送PATCH请求更新用户
try {
    $updateResult = Invoke-RestMethod -Method Patch -Headers $queryHeaders -Uri $updateUserUri -Body $updateUserBody -ContentType "application/json"
    Write-Host "用户更新成功:"
    $updateResult
} catch {
    Write-Host "更新用户失败,错误信息:" $_.Exception.Message
}

注意事项

  • 确保使用的服务主体(client_id对应的应用)已获得User.ReadWrite.All权限,且完成了管理员同意
  • 设置的密码需符合Azure AD B2C的密码策略要求
  • 针对B2C用户,添加操作时identities字段为必填项,需指定正确的signInType和issuerAssignedId

内容的提问来源于stack exchange,提问作者Eric Chen

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 11:05:09