PowerShell遍历二维数组批量为Azure用户添加手机号两步验证
PowerShell批量配置Azure用户手机号两步验证调整方案
你原来的代码主要存在3个问题,直接按以下修正即可:
1. 核心修正点
- PowerShell中数组定义需要用
@()包裹,而非你用的方括号 - foreach循环遍历二维数组时,每次循环拿到的变量本身就是嵌套的子数组,不需要再加外层数组索引取值
- 变量名拼写错误:你定义的数组名为
$name,调用时误写为$navn
2. 完整可运行代码
2.1 二维数组正确定义
# 数组每一行格式为 @(用户邮箱, 对应手机号) $userPhoneList = @( @("name-01@email.com","+1 12345678"), @("name-02@email.com","+1 12345678"), @("name-03@email.com","+1 12345678"), @("name-04@email.com","+1 12345678"), @("name-05@email.com","+1 12345678"), @("name-06@email.com","+1 12345678"), @("name-07@email.com","+1 12345678"), @("name-08@email.com","+1 12345678"), @("name-09@email.com","+1 12345678"), @("name-10@email.com","+1 12345678") )
2.2 批量执行逻辑
基础无错误捕获版本:
foreach ($item in $userPhoneList) { New-MgUserAuthenticationPhoneMethod -UserId $item[0] -phoneType "mobile" -phoneNumber $item[1] -ErrorAction Continue }
带执行结果提示的版本(推荐使用,方便排查问题):
foreach ($item in $userPhoneList) { try { New-MgUserAuthenticationPhoneMethod -UserId $item[0] -phoneType "mobile" -phoneNumber $item[1] -ErrorAction Stop Write-Host "✅ $($item[0]) 绑定成功" } catch { Write-Host "❌ $($item[0]) 绑定失败,错误信息:$_" } }
3. 前置依赖说明
运行前需要提前完成以下准备:
- 安装Graph对应模块:执行
Install-Module Microsoft.Graph.Identity.SignIns - 登录Graph并授权:执行
Connect-MgGraph -Scopes "UserAuthenticationMethod.ReadWrite.All",使用全局管理员或身份验证管理员账号登录授权
内容的提问来源于stack exchange,提问作者Elly
相关产品推荐
相关产品推荐

