当前位置:网站首页 > 更多 > 玩电脑 > 正文

[玩转系统] 使用 PowerShell 生成强随机密码

作者:精品下载站 日期:2024-12-14 20:08:40 浏览:17 分类:玩电脑

使用 PowerShell 生成强随机密码


在 Active Directory 中创建新用户帐户时,管理员为每个帐户设置唯一的初始密码,并将其告知用户(通常在首次登录时,系统会通过 AD userAccountControl 属性的“用户下次登录时必须更改密码”选项提示用户更改此密码)。如果您不想为每个用户创建新的随机密码或者您正在使用 PowerShell 脚本创建 AD 帐户,则可以使用简单的 PowerShell 脚本自动生成唯一的密码。

要生成密码,您可以使用 .NET 的 System.Web.Security.Membership 类中的 GeneratePassword 方法。让我们使用以下 PowerShell 命令生成一个强随机密码:

# Import System.Web assembly
Add-Type -AssemblyName System.Web
# Generate random password
[System.Web.Security.Membership]::GeneratePassword(8,2)

[玩转系统] 使用 PowerShell 生成强随机密码

GeneratePassword 方法允许生成最多 128 个字符的密码。该方法使用两个初始参数:密码长度(在我的例子中为 8 个字符)和非字母或非数字特殊字符的最小数量,例如

!, -, $, &, @, #, %, etc

2 特殊字符)。如您所见,根据这些参数,已为我生成了以下密码:

QX.9ogy:

不建议在用户密码中使用超过一两个特殊字符,否则用户将无法正确输入密码(例如

k};E^]$|

)。

因此,如果您使用 New-ADUser PowerShell cmdlet 创建新用户并希望为其设置唯一密码,请使用以下命令:

Add-Type -AssemblyName System.Web
New-ADUser -Name "Jeremy Irons" -GivenName "Jeremy" -Surname "Irons" -SamAccountName "jirons" -UserPrincipalName "[email protected]" -Path "OU=Users,OU=Glasgow,OU=UK,DC=a-d,DC=com" -AccountPassword ([System.Web.Security.Membership]::GeneratePassword(8,2)) -ChangePasswordAtLogon $true -Enabled $true

此外,您还可以使用GeneratePassword 方法重置Active Directory 用户密码。

如果您的公司使用强密码策略,在某些情况下,使用 GeneratePassword 方法生成的密码可能不符合您的 AD 域密码策略的要求。在为用户设置密码之前,您可以确保其符合密码复杂性策略。当然,检查密码的长度和用户名是否存在是没有意义的。您可以检查密码是否满足“密码必须满足复杂性要求”政策中的至少3项要求(密码必须包含以下列表中的至少3种字符:数字小写字符、大写字符和特殊字符)。如果密码检查失败,则必须重新生成密码。

我编写了一个小型 PowerShell 脚本,用于生成新的随机密码并检查它是否满足密码复杂性要求:

Function GenerateStrongPassword ([Parameter(Mandatory=$true)][int]$PasswordLenght)
{
Add-Type -AssemblyName System.Web
$PassComplexCheck = $false
do {
$newPassword=[System.Web.Security.Membership]::GeneratePassword($PasswordLenght,1)
If ( ($newPassword -cmatch "[A-Z\p{Lu}\s]") `
-and ($newPassword -cmatch "[a-z\p{Ll}\s]") `
-and ($newPassword -match "[\d]") `
-and ($newPassword -match "[^\w]")
)
{
$PassComplexCheck=$True
}
} While ($PassComplexCheck -eq $false)
return $newPassword
}

要生成包含 5 个字符和至少一个特殊字符的密码,请运行以下命令:

GenerateStrongPassword (5)

[玩转系统] 使用 PowerShell 生成强随机密码

此脚本将始终创建符合您的 AD 密码复杂性策略的密码。

您需要 登录账户 后才能发表评论

取消回复欢迎 发表评论:

关灯