You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求可创建多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"
}

使用说明

  1. 先安装AzureAD模块(如果未安装):
    Install-Module -Name AzureAD -Force -AllowClobber
    
  2. 连接到Azure AD:
    Connect-AzureAD
    
  3. 修改脚本中的$Usernames列表和$domain为你的实际信息
  4. 运行脚本,生成的用户密码会保存到当前目录的AzureAD_User_Passwords.csv文件中

关键特性

  • 自动生成符合Azure AD密码策略的随机密码
  • 强制用户首次登录时修改密码,提升安全性
  • 导出密码到CSV文件,方便批量分发
  • 跳过已存在的用户,避免重复操作

内容的提问来源于stack exchange,提问作者Raviteja

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 09:47:11