这个头衔真的流了。
在设置用于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,只更新电话号码。
答案 0 :(得分:1)
正如我在评论中所说,看来PowerShell有只读访问权限。
Azure feedback上甚至打开了门票。
有计划去做,但没有ETA。我的猜测是,如果你只想使用PowerShell,你将不得不等待。
作为解决方法,您可以使用 powershell & watir for .NET 或Watin与Watin recorder通过Internet Explorer自动化它。因为我没有测试Azure;我无法为您创建可行的代码。
使用 Watin 和powershell - 您可以查看:https://cmille19.wordpress.com/2009/09/01/internet-explorer-automation-with-watin/
以下文字和代码,我想在这里备份,取自上面的页面(所有作者的作品):
接下来,单击“记录”按钮,然后单击所需的HTML元素 自动化。然后停止WatIN记录器并单击复制代码 剪贴板图标。这将生成一些只需要的C#代码 翻译成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();
所以,我现在知道按钮的名称,它是3帧深。一个 稍微有点WatIN对象探索,我想出了以下内容 脚本,每50分钟点击一次按钮。
#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)
}
答案 1 :(得分:0)
免责声明:该代码按原样提供。万一MS更改了Azure Portal界面,它可能会停止工作。
我正在使用以下Greasemonkey脚本来更新备用电子邮件和电话(电话can be updated via Graph API now,因此该脚本仅对电子邮件有用):
// ==UserScript==
// @name Unnamed Script 548177
// @version 1
// @grant none
// @namespace https://portal.azure.com
// ==/UserScript==
(function(){
document.addEventListener('keydown', function(e) {
// press alt+shift+g
if (e.keyCode == 71 && e.shiftKey && !e.ctrlKey && e.altKey && !e.metaKey) {
const url = document.URL;
const regex = /https:\/\/portal.azure.com\/#blade\/Microsoft_AAD_IAM\/UserDetailsMenuBlade\/UserAuthMethods\/userId\/[\w-]+\/adminUnitObjectId[\/]*\?\w+=(\d{9})&\w+=([\w\.-@]+)/;
const params = url.match(regex);
const allAuthRows = document.getElementsByClassName('ext-userauthenticationmethods-section-row');
const authRowsArray = Array.from(allAuthRows);
let emailRow;
let phoneRow;
let i;
for (i =0; i < authRowsArray.length; i++) {
if (authRowsArray[i].childNodes[1].childNodes[1].childNodes[0].data === 'Email') {
emailRow = authRowsArray[i]
}
if (authRowsArray[i].childNodes[1].childNodes[1].childNodes.length > 1) {
if (authRowsArray[i].childNodes[1].childNodes[1].childNodes[1].childNodes[0].data === 'Phone') {
phoneRow = authRowsArray[i]
}
}
}
const emailInput = emailRow.childNodes[3].childNodes[1].childNodes[1].childNodes[0].childNodes[0].childNodes[0].childNodes[2];
const phoneInput = phoneRow.childNodes[3].childNodes[1].childNodes[1].childNodes[0].childNodes[0].childNodes[0].childNodes[2];
const event = new Event('input', {
'bubbles': true,
'cancelable': true
});
if (params[1] !== '000000000') {
phoneInput.value = `+48 ${params[1]}`;
phoneInput.dispatchEvent(event);
}
if (params[2] !== 'null') {
emailInput.value = params[2];
emailInput.dispatchEvent(event);
}
setTimeout(() => {
const buttonArr = document.getElementsByClassName('azc-toolbarButton-container fxs-portal-hover');
const saveButton = Array.from(buttonArr).find(e => e.title === 'Save');
saveButton.click();
} , 2000);
}
}, false);
})();
它要求您使用这样的querystring打开Azure门户(我使用PowerShell来做到):
https://portal.azure.com/#blade/Microsoft_AAD_IAM/UserDetailsMenuBlade/UserAuthMethods/userId/$($u.ObjectId)/adminUnitObjectId/?param1=$newPhone¶m2=$newMail
如何使用它:
Unable to sign-in
错误Alt+Shift+g
(您可以在第一个if
中更改快捷方式)Ctrl+w
关闭当前标签,然后按Alt+Tab
切换到上一个窗口(应为PowerShell)+48
代表波兰)