求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
相关产品推荐
相关产品推荐

