【发布时间】:2021-03-20 08:57:45
【问题描述】:
我正在使用 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(无需解密)
【问题讨论】:
-
$pass.GetNetworkCredential().Password瞧:明文密码。
标签: powershell credentials password-encryption powershell-5.0 windows-server-2016