ore*_*enk 2 powershell credentials password-encryption powershell-5.0 windows-server-2016
我正在使用 PowerShell 创建本地用户。我需要从键盘获取输入:用户名和密码。要获取密码,我可以使用以下方法之一:
$user_details = Get-Credential
Run Code Online (Sandbox Code Playgroud)
或者
$pass = Read-Host -assecureString "Please enter your password"
Run Code Online (Sandbox Code Playgroud)
在这两种情况下,我都会得到加密的密码变量System.Security.SecureString。在这两种情况下,当我尝试创建用户时,
New-LocalUser -Name $username -Password $pass
Run Code Online (Sandbox Code Playgroud)
我收到错误消息,提示密码不复杂。
New-LocalUser:无法更新密码。为新密码提供的值不满足域的长度、复杂性或历史记录要求。”
由于密码是加密的,(System.Security.SecureString) 我无法知道密码的复杂性。如何强制用户输入符合复杂性规则的密码?
(使用未加密的密码对我来说不是一个好的解决方案)
更新:在几个与良好解决方案相关但不满足我的安全要求的答案之后,我想重新表述一下:
如何检查已存储在对象中的密码复杂性:System.Security.SecureString(无需解密)
除了 TheIncorrigible1 和 KoryGill 已经回答的内容以及您添加的错误消息The valueprovided for the newpassword does not meet the length, Complexity, or History requests of the domain 之外,您还可以添加对默认密码复杂性的测试。
如果你做一个
Get-ADDefaultDomainPasswordPolicy
Run Code Online (Sandbox Code Playgroud)
你会得到一个像这样的对象:
ComplexityEnabled : True
DistinguishedName : DC=yourdomain,DC=com
LockoutDuration : 00:30:00
LockoutObservationWindow : 00:30:00
LockoutThreshold : 3
MaxPasswordAge : 42.00:00:00
MinPasswordAge : 1.00:00:00
MinPasswordLength : 7
objectClass : {domainDNS}
objectGuid : 44e3c936-5c8f-40cd-af67-f846c184cc8c
PasswordHistoryCount : 24
ReversibleEncryptionEnabled : False
Run Code Online (Sandbox Code Playgroud)
从中您可以检查有趣的属性,例如 中密码的最小长度,密码可以在 中重复使用MinPasswordLength多少次PasswordHistoryCount。如果ComplexityEnabled为 True,则密码还需要大写、小写、数字和非字母数字字符的混合。
我在这里找到了一篇关于该内容的优秀博客,您可能想阅读。
| 归档时间: |
|
| 查看次数: |
23141 次 |
| 最近记录: |