通过Powershell为AzureAD设置StrongAuthenticationUserDetails PhoneNumber?

这个头衔真的流了.

在设置用于Azure Active Directory的计算机时,我们会让IT进行初始设置和配置.这包括首次登录并加入Azure Active Directory.登录时强制您选择验证方法.我们会使用我们的台式电话或手机轻松.

现在是我们更新第二个因素电话号码的时候了.我知道一种通过Azure AD Web UI手动执行此操作的方法,但我正在寻找一种在PowerShell中设置该编号的脚本方式.

这是我通过PowerShell检索数字的方法.

Get-msoluser -UserPrincipalName "email@emailaddress.com" | Select-Object -ExpandProperty StrongAuthenticationUserDetails

该代码返回此信息:

ExtensionData                     : System.Runtime.Serialization.ExtensionDataObject
AlternativePhoneNumber            :
Email                             :
OldPin                            :
PhoneNumber                       : +1 5554445555
Pin                               :

但是,似乎没有类似的选项来设置StrongAuthenticationUserDetails.

我的所有搜索都提到了如何批量启用双因素身份验证,这不是我想要做的.我想保留StrongAuthentication,只更新电话号码.

最佳答案 正如我在评论中所说,看来PowerShell有只读访问权限.

Azure feedback甚至有开门票.

有计划,但没有ETA.我的猜测是,如果你只想使用powershell,你将不得不等待.

作为解决方法,您可以使用powershell& watir for .NETWatinWatin recorder通过Internet Explorer自动化它.因为我没有测试Azure;我无法为您创建可行的代码.

使用Watin和powershell – 您可以查看:https://cmille19.wordpress.com/2009/09/01/internet-explorer-automation-with-watin/

以下文本和代码,我想在这里备份,取自上面的页面(作者的所有学分):

Next click the record button and click the HTML element you want to
automate. Then stop the WatIN recorder and click copy code to
clipboard icon. This will produce some C# code that just needs to be
translated into PowerShell:

// Windows
WatiN.Core.IE window = new WatiN.Core.IE();

// Frames
Frame frame_sd_scoreboard = window.Frame(Find.ByName("sd") && Find.ByName("scoreboard"));

// Model
Element __imgBtn0_button = frame_sd_scoreboard.Element(Find.ByName("imgBtn0_button"));

// Code
__imgBtn0_button.Click();
window.Dispose();

So, I now know the name of the button and that it is 3 frames deep. A
little WatIN object exploration later, I came up with the follow
script, which clicks a button every 50 mintues.

#Requires -version 2.0
#powershell.exe -STA

[Reflection.Assembly]::LoadFrom( "$ProfileDirLibrariesWatiN.Core.dll" ) | out-null
$ie = new-object WatiN.Core.IE("https://sd.acme.com/CAisd/pdmweb.exe")
$scoreboard  = $ie.frames | foreach {$_.frames } | where {$_.name –eq ‘sd’} |  foreach {$_.frames } | where {$_.name –eq ‘scoreboard’}
$button = $scoreboard.Element("imgBtn0_button")

while ($true)
{
    $button.Click()
    #Sleep for 50 minutes
    [System.Threading.Thread]::Sleep(3000000)
}
点赞