求可创建多Azure AD用户且各用户密码唯一的PowerShell脚本
批量创建Azure AD用户并生成唯一密码的PowerShell脚本
你提供的原脚本使用了统一密码,无法满足每个用户拥有唯一密码的需求,以下是改进后的脚本,会为每个用户生成符合Azure AD密码规范的唯一随机密码,并将用户信息和密码导出到CSV文件以便后续分发:
# 定义要创建的用户名列表 $Usernames = @("Raghu", "Rajesh", "Ramu", "Kiran", "Karan") # 替换为你的Azure AD域名 $domain = "yourdomain.com" # 存储用户和密码的数组 $userPasswordList = @() # 生成符合Azure AD要求的随机密码函数 function Generate-RandomPassword { param( [int]$length = 12 ) # Azure AD密码要求:至少8字符,包含大写、小写、数字、特殊字符 $upperCase = "ABCDEFGHIJKLMNOPQRSTUVWXYZ" $lowerCase = "abcdefghijklmnopqrstuvwxyz" $numbers = "0123456789" $specialChars = "!@#$%^&*()_+-=" # 确保包含每种类型的字符 $password = (Get-Random -InputObject $upperCase -Count 1) + (Get-Random -InputObject $lowerCase -Count 1) + (Get-Random -InputObject $numbers -Count 1) + (Get-Random -InputObject $specialChars -Count 1) # 填充剩余长度的随机字符 $allChars = $upperCase + $lowerCase + $numbers + $specialChars $password += (Get-Random -InputObject $allChars -Count ($length - 4)) -join "" # 打乱密码顺序 return ($password.ToCharArray() | Get-Random -Count $length) -join "" } foreach ($username in $Usernames) { $userPrincipalName = "$username@$domain" # 检查用户是否已存在 $existingUser = Get-AzureADUser -Filter "userPrincipalName eq '$userPrincipalName'" if ($existingUser) { Write-Host "用户 $username 已存在,跳过创建。" continue } # 生成唯一密码 $plainPassword = Generate-RandomPassword $securePassword = ConvertTo-SecureString -String $plainPassword -AsPlainText -Force # 创建用户 try { $newUser = New-AzureADUser -DisplayName $username ` -UserPrincipalName $userPrincipalName ` -Password $securePassword ` -AccountEnabled $true ` -ForceChangePasswordNextLogin $true # 强制用户首次登录修改密码 if ($newUser) { Write-Host "用户 $username 创建成功。" # 将用户信息和密码添加到数组 $userPasswordList += [PSCustomObject]@{ Username = $username UserPrincipalName = $userPrincipalName Password = $plainPassword CreatedTime = Get-Date } } } catch { Write-Host "创建用户 $username 失败:$_" } } # 将用户和密码导出到CSV文件 if ($userPasswordList.Count -gt 0) { $outputPath = ".\AzureAD_User_Passwords.csv" $userPasswordList | Export-Csv -Path $outputPath -NoTypeInformation -Encoding UTF8 Write-Host "用户密码已导出到:$outputPath" }
使用说明
- 先安装AzureAD模块(如果未安装):
Install-Module -Name AzureAD -Force -AllowClobber - 连接到Azure AD:
Connect-AzureAD - 修改脚本中的
$Usernames列表和$domain为你的实际信息 - 运行脚本,生成的用户密码会保存到当前目录的
AzureAD_User_Passwords.csv文件中
关键特性
- 自动生成符合Azure AD密码策略的随机密码
- 强制用户首次登录时修改密码,提升安全性
- 导出密码到CSV文件,方便批量分发
- 跳过已存在的用户,避免重复操作
内容的提问来源于stack exchange,提问作者Raviteja
相关产品推荐
相关产品推荐

