在Azure AD中,如何设置和读取用户';s通过PowerShell发送的主要电子邮件(例如设置AzureADUser和获取AzureADUser)?

在Azure AD中,如何设置和读取用户';s通过PowerShell发送的主要电子邮件(例如设置AzureADUser和获取AzureADUser)?,azure,powershell,azure-active-directory,office365,Azure,Powershell,Azure Active Directory,Office365,我在Azure AD中有一个用户。在“身份验证方法”下,该用户的“主要”电子邮件设置为某个值。身份验证联系人信息的所有其他字段(例如电话、备用电话和备用电子邮件)均为空。 我正在查看有关PowerShell cmdlet Set-AzureADUser和Get-AzureADUser的Microsoft公共文档: 本文档提到了如何设置备用电子邮件,但没有提到如何设置用户的主电子邮件 此外,PowerShell cmdlet Get-AzureADUser似乎不会返回用户的主电子邮件(),即使

我在Azure AD中有一个用户。在“身份验证方法”下,该用户的“主要”电子邮件设置为某个值。身份验证联系人信息的所有其他字段(例如电话、备用电话和备用电子邮件)均为空。

我正在查看有关PowerShell cmdlet Set-AzureADUser和Get-AzureADUser的Microsoft公共文档:

本文档提到了如何设置备用电子邮件,但没有提到如何设置用户的主电子邮件

此外,PowerShell cmdlet Get-AzureADUser似乎不会返回用户的主电子邮件(),即使在Azure门户中查看用户时已明确设置了主电子邮件。


因此,我如何以编程方式设置和读取Azure AD中用户的主要电子邮件?

从屏幕截图上看,该用户看起来就像混合设置中没有邮箱的同步用户

如果用户有邮箱,则将填充主地址,因为我假设用户没有邮箱

如果它是同步用户,那么您需要更新本地广告上的信息,并让它同步到Azure


希望这能有所帮助。

到目前为止,PowerShell中的身份验证电子邮件字段和身份验证电话尚不可设置

此MSDN论坛帖子中的更多详细信息:
现在可以通过Microsoft Graph beta API设置用户的身份验证电子邮件。有关详细信息,请参阅

目前,这只能通过Azure AD应用程序中的委派权限来完成。因此,用户必须在进行任何更新之前进行身份验证

下面是一些使用PowerShell的粗略示例代码。请注意,其中大部分与获取访问令牌有关。只有最后3行与向用户添加身份验证电子邮件相关

$AzureTenantId = <YourTenantId>
$AzureAppId = <YourAzureADApplicationId> #The application needs to have appropiate delagated permissions set
$UserName = 'exampleuser@test.com'
$UserAuthEmail = 'exampleuser@gmail.com'

#Get token by getting user to authenticate with a device code
$Resource = "https://graph.microsoft.com/"

$DeviceCodeRequestParams = @{
    Method = 'POST'
    Uri    = "https://login.microsoftonline.com/$AzureTenantId/oauth2/devicecode"
    Body   = @{
        client_id = $AzureAppId
        resource  = $Resource
    }
}
$DeviceCodeRequest = Invoke-RestMethod @DeviceCodeRequestParams

Write-Host "A browser window will launch in 5 seconds. Enter the code $($DeviceCodeRequest.user_code) to authenticate. You should just be able to paste it." -ForegroundColor Yellow
Set-Clipboard $DeviceCodeRequest.user_code
Start-Sleep -Seconds 5
Start $DeviceCodeRequest.verification_url

Pause

$TokenRequestParams = @{
    Method = 'POST'
    Uri    = "https://login.microsoftonline.com/$AzureTenantId/oauth2/token"
    Body   = @{
        grant_type = "urn:ietf:params:oauth:grant-type:device_code"
        code       = $DeviceCodeRequest.device_code
        client_id  = $AzureAppId
    }
}
$TokenRequest = Invoke-RestMethod @TokenRequestParams
$Token = $TokenRequest.access_token

#Set the email authentication
$Headers = @{Authorization = "Bearer $Token"}
$BodyJson = "{`"emailAddress`": `"$UserAuthEmail`"}"
Invoke-RestMethod "https://graph.microsoft.com/beta/users/$UserName/authentication/emailMethods" -Method POST -ContentType application/json -Headers $Headers -Body $BodyJson
$AzureTenantId=
$AzureAppId=#应用程序需要设置适当的delagated权限
$UserName='1exampleuser@test.com'
$UserAuthEmail='0exampleuser@gmail.com'
#通过让用户使用设备代码进行身份验证来获取令牌
$Resource=”https://graph.microsoft.com/"
$DeviceCodeRequestParams=@{
方法='POST'
Uri=”https://login.microsoftonline.com/$AzuretantId/oauth2/devicecode“
正文=@{
客户端id=$AzureAppId
资源=$resource
}
}
$DeviceCodeRequest=调用RestMethod@DeviceCodeRequestParams
Write Host“浏览器窗口将在5秒钟内启动。输入代码$($DeviceCodeRequest.user_code)进行身份验证。您应该可以粘贴它。”-ForegroundColor黄色
设置剪贴板$DeviceCodeRequest.user\u代码
开始睡眠-5秒
启动$DeviceCodeRequest.verification\u url
暂停
$TokenRequestParams=@{
方法='POST'
Uri=”https://login.microsoftonline.com/$Azuretantid/oauth2/token”
正文=@{
grant\u type=“urn:ietf:params:oauth:grant type:device\u code”
代码=$DeviceCodeRequest.device\u代码
客户端id=$AzureAppId
}
}
$TokenRequest=调用RestMethod@TokenRequestParams
$Token=$TokenRequest.access\u令牌
#设置电子邮件身份验证
$Headers=@{Authorization=“Bearer$Token”}
$BodyJson=“{`”电子邮件地址`:`“$UserAuthEmail`”}”
调用RestMethod“https://graph.microsoft.com/beta/users/$UserName/authentication/emailMethods“-Method POST-ContentType application/json-Headers$Headers-Body$BodyJson

如果邮件为空,代理地址是否包含
SMTP:
值?代理地址在我看来是空的。我想澄清,设置用户“主要”电子邮件的上下文是在自助密码重置(SSPR)上下文中。因此,此电子邮件不能是“您的主要工作或学校电子邮件”。因此,我们的想法是为SSPR设置一封电子邮件,比如@gmail.com。有没有任何方法可以通过编程来实现这一点?我们不尝试修改用户的实际本地邮箱或Office 365邮箱。如果启用SSPR,则无论是设置用户代理地址、主地址还是其他邮件,都将提示用户在下次登录时设置恢复方法。用于SSPR的电子邮件无法通过我知道的任何AddPowerShell命令看到,即使如此。您可以在AAD中的部分下设置电子邮件,但用户仍需要设置。