如何让PowerShell脚本校验密码符合AD默认域密码策略
用PowerShell结合AD默认密码策略校验密码合规性
核心思路
先通过Get-ADDefaultDomainPasswordPolicy获取域的默认密码策略,再根据策略中的参数(最小长度、复杂度开关、字符要求等)编写校验逻辑,完全避免硬编码规则,适配域策略的动态更新。
实现代码
下面是一个可复用的校验函数,直接传入密码和策略即可完成合规性检查:
function Test-ADPasswordCompliance { param( [Parameter(Mandatory=$true)] [string]$Password, [Parameter(Mandatory=$true)] [Microsoft.ActiveDirectory.Management.ADDomainPasswordPolicy]$PasswordPolicy, [string]$Username # 可选参数,用于检查密码是否包含用户名(AD复杂度规则默认要求) ) # 1. 校验密码最小长度 if ($Password.Length -lt $PasswordPolicy.MinPasswordLength) { Write-Warning "密码长度不足,域策略要求至少 $($PasswordPolicy.MinPasswordLength) 个字符" return $false } # 2. 校验复杂度要求(仅当策略启用复杂度时执行) if ($PasswordPolicy.ComplexityEnabled) { $charTypeCount = 0 # 检查是否包含大写字母 if ($Password -cmatch '[A-Z]') { $charTypeCount++ } # 检查是否包含小写字母 if ($Password -cmatch '[a-z]') { $charTypeCount++ } # 检查是否包含数字 if ($Password -cmatch '[0-9]') { $charTypeCount++ } # 检查是否包含特殊字符(AD定义的非字母数字字符) if ($Password -cmatch '[^a-zA-Z0-9]') { $charTypeCount++ } # AD复杂度要求至少3种字符类型 if ($charTypeCount -lt 3) { Write-Warning "密码不符合复杂度要求,需至少包含以下3种字符类型:大写字母、小写字母、数字、特殊字符" return $false } # 检查密码是否包含用户名(AD默认规则) if ($Username -and $Password -like "*$Username*") { Write-Warning "密码不能包含用户名" return $false } } # 所有校验项通过 return $true }
使用示例
- 先获取域默认密码策略:
$domainPasswordPolicy = Get-ADDefaultDomainPasswordPolicy
- 校验目标密码并执行用户创建逻辑:
$newUsername = "jane.doe" $newPassword = "Banana456!" if (Test-ADPasswordCompliance -Password $newPassword -PasswordPolicy $domainPasswordPolicy -Username $newUsername) { Write-Host "密码符合策略,开始创建用户..." # 执行AD用户创建代码 New-ADUser -Name "Jane Doe" ` -SamAccountName $newUsername ` -UserPrincipalName "$newUsername@yourdomain.com" ` -AccountPassword (ConvertTo-SecureString $newPassword -AsPlainText -Force) ` -Enabled $true ` -Path "OU=Users,DC=yourdomain,DC=com" } else { Write-Host "密码不符合域策略,终止用户创建" }
补充说明
- 函数完全贴合AD默认密码策略的规则,策略更新后无需修改脚本,自动适配新要求。
- 如果你的环境使用精细密码策略(而非默认域策略),只需将
Get-ADDefaultDomainPasswordPolicy替换为Get-ADFineGrainedPasswordPolicy,校验逻辑保持不变。
内容的提问来源于stack exchange,提问作者Escambray
相关产品推荐
相关产品推荐

