Warm tip: This article is reproduced from serverfault.com, please click

powershell-如何检查密码复杂度?

(powershell - How can I check password complexity?)

发布于 2018-08-08 23:35:47

我正在使用 PowerShell 创建本地用户。我需要从键盘输入:用户名和密码。要获取密码,我可以使用以下方法之一:

$user_details = Get-Credential

要么

$pass = Read-Host -assecureString "Please enter your password"

在这两种情况下,我都会得到加密的密码变量System.Security.SecureString在这两种情况下,当我尝试创建用户时,

New-LocalUser -Name $username -Password $pass

我收到一个错误,提示密码不复杂。

New-LocalUser :无法更新密码。为新密码提供的值不符合域的长度、复杂性或历史要求。”

由于密码是加密的,(System.Security.SecureString) 我无从知道密码的复杂程度。如何强制用户输入符合复杂性规则的密码?

(使用未加密的密码对我来说不是一个好的解决方案)

更新:在几个与好的解决方案相关但不符合我的安全要求的答案之后,我想改写:

如何检查已存储在对象中的密码复杂性:System.Security.SecureString(不解密)

Questioner
orenk
Viewed
0
orenk 2018-09-03 20:35:06

使用 Try-Catch 是我处理此问题的最佳方式。
我读取了密码,尝试执行命令
捕获异常错误,并在密码错误的情况下再次请求密码