PowerShell如何提升并行执行阈值,将现有foreach循环改造为并行批量创建AzAD用户
PowerShell 批量创建Azure AD用户并行改造方案
注意:
ForEach-Object -Parallel语法仅支持 PowerShell 7.0及以上版本,Windows系统默认预装的PowerShell 5.1不支持该特性,请先确认运行环境版本。
修改后代码
# 自定义并行并发阈值,可根据实际需求调整,不建议设置过高避免触发Azure AD接口限流 $parallelThrottleLimit = 5 Import-Csv -Delimiter "," $importCSV | ForEach-Object -ThrottleLimit $parallelThrottleLimit -Parallel { $Displayname = $_.DisplayName $UserPrincipalName = $_.UserPrincipalName $MailNickname = $_.MailNickname $password = $_.Password $SecureStringPassword = ConvertTo-SecureString -String $password -AsPlainText -Force New-AzADUser -DisplayName $Displayname -UserPrincipalName $UserPrincipalName -Password $SecureStringPassword -MailNickname $MailNickname -ForceChangePasswordNextLogin:$false | Select-Object -ExpandProperty UserPrincipalName }
核心修改说明
- 替换原有
foreach关键字遍历逻辑为管道+ForEach-Object -Parallel并行语法,直接承接CSV读取的用户列表作为输入 - 通过
-ThrottleLimit参数控制并发执行的线程数,调整参数值即可修改并行阈值 - 并行执行块内,管道传入的单条用户数据用
$_指代;如果需要引用并行块外部定义的变量,需给变量添加$using:前缀,示例:$using:外部变量名
注意事项
- 执行代码前请先通过
Connect-AzAccount完成Azure账号登录,确保账号具备Azure AD用户创建权限,并行执行会自动继承当前会话的认证上下文 - 建议先小范围测试调整并发阈值,避免并发过高触发Azure AD服务端限流,导致部分用户创建失败
- 如有排查需求,可在
New-AzADUser后添加错误捕获逻辑,记录创建失败的用户信息便于后续处理
内容的提问来源于stack exchange,提问作者Glen Sale
相关产品推荐
相关产品推荐

