因为本文主要讲的是通过脚本如何以安全方式设置密码,所以关于组策略如何设置请参考这里:
WinServer 2019 AD 组策略 启用本地管理员账号,重置密码_ad域命令启用administrator账户-CSDN博客
我们首先要讲一下,以一般方法创建的脚本文件,如下面?
一、明文方法:
1、创建?ModifyPassword.ps1
Set-LocalUser -Name "administrator" -Password (ConvertTo-SecureString "Sbi@1234" -AsPlainText -Force)
总结:大家都知道通过下面路径就能找到这个脚本,所以密码也会明文暴露出来。?
\\域名\SysVol\域名\Policies\组策略ID\Machine\Scripts\Startup
二、安全方法
?1、生成Key
# 生成 key
$keyFile = "c:\aes.key"
$key = New-Object Byte[] 32
[Security.Cryptography.RNGCryptoServiceProvider]::Create().GetBytes($key)
$key | Out-File $keyFile
2、把明文字符串密码转为SecureString对象
$SecurePwd = ConvertTo-SecureString "Admin@123" -AsPlainText -Force
3、把SecureString对象转为加密字符串后,保存到文件
ConvertFrom-SecureString $SecurePwd -Key $key | Out-File "c:\pwd.txt"
4、把 aes.key 跟 pwd.txt 拷贝到脚本位置
5、再创建一个脚本文件?ModifyPassword.ps1
# 读取文件
$PasswdFile = "路径\pwd.txt"
$keyFile = "路径\aes.key"
$key = Get-Content $keyFile
# 重新转换成SecureString对象
$SecurePwd = Get-Content $PasswdFile | ConvertTo-SecureString -Key $key
# 修改密码
Set-LocalUser -Name Administrator -Password $SecurePwd
总结:虽然域用户还是能通过 sysvol 文件夹找到这个脚本,但是因为看到的是加密后的 pwd.txt 跟aes.key文件,所以不会造成密码泄露。?