通过Graph更新AzureAD / O365 UPN

时间:2016-02-05 19:35:29

标签: powershell azure office365 microsoft-graph

我正在尝试通过MS Graph利用Powershell中的.Net ADAL库更新联合域中Azure AD用户(加载Azure AD Connect)的UPN。我有理由确定我已在Azure和PS中正确配置了所有内容,因为如果我发出更新usageLocation属性的命令,它会起作用(为简洁而剪裁):

$UPN="user@mytenant.edu"
$Body=@{UsageLocation="JP"} | ConvertTo-JSON
$Result=Invoke-RestMethod -Method PATCH -Uri "https://graph.microsoft.com/v1.0/users/${UPN}" -Headers @{Authorization=$authenticationResult.CreateAuthorizationHeader()} -ContentType "application/json" -Body $Body
$user=Invoke-RestMethod -Method GET -Uri "https://graph.microsoft.com/v1.0/users/${UPN}?`$select=usageLocation" -Headers @{Authorization=$authenticationResult.CreateAuthorizationHeader()} -ContentType "application/json"
$user.usageLocation

JP

但是,如果我尝试将UPN更新为非联合域(因此我不会遇到http://blogs.perficient.com/microsoft/2013/03/changing-upn-for-office-365-account-between-two-sso-domains/中描述的问题),我会收到内部服务器错误(500):

$UPN="user@mytenant.edu"
$Body=@{userPrincipalName="user@tenant.onmicrosoft.com"} | ConvertTo-JSON
$Result=Invoke-RestMethod -Method PATCH -Uri "https://graph.microsoft.com/v1.0/users/${UPN}" -Headers @{Authorization=$authenticationResult.CreateAuthorizationHeader()} -ContentType "application/json" -Body $Body

Invoke-RestMethod : The remote server returned an error: (500) Internal Server Error.

我尝试了许多不同的变体,包括检索Azure AD GUID并在PATCH命令中使用而不是UPN并使用旧的Azure AD Graph(返回相同的500错误)。我可以使用O365 Powershell命令进行更改:

Set-MsolUserPrincipalName -UserPrincipalName $UPN -NewUserPrincipalName $newUPN

但我似乎无法通过MS Graph使其工作。图表的文档暗示UPN可以像其他属性一样更新(例如,c.v。http://graph.microsoft.io/en-us/docs/api-reference/v1.0/api/user_update)。我想知道如果因为UPN是一个关键,也许这会使更新不起作用?我也不认为这是一个许可问题,通常会抛出"没有足够的权限来完成操作。"这不是我所看到的。

谢谢!

UPDATE1:这是我今天早上重新尝试从Error对象中捞出的所有东西:

{
  "error": {
    "code": "Service_InternalServerError",
    "message": "Encountered an internal server error.",
    "innerError": {
      "request-id": "cbb08d3c-1143-4d0b-8722-5230b00bd00f",
      "date": "2016-02-15T16:48:15"
    }
  }
}

1 个答案:

答案 0 :(得分:1)

我看了一下跟踪,我会在我们这边提出500错误的错误(我们当然可以做得更好)。基于跟踪,如果要通过将用户从联合域重命名为云托管域来更新用户,则必须提供/设置密码作为请求的一部分(使用passwordProfile复杂类型)。这就是根据日志请求失败的原因。如果这样可以解决您的问题,请告诉我们。