我正在使用 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(不解密)
使用 Try-Catch 是我处理此问题的最佳方式。
我读取了密码,尝试执行命令
捕获异常错误,并在密码错误的情况下再次请求密码