在Windows活动目录中的主机依据合规的要求,至少每年都应当按照密码规则进行一次本地管理员的密码变更。

以下脚本是使用有域管理员权限的域账号进行批量执行来修改主机管理员密码。

# Windows域主机变更本地管理员密码脚本
# 执行需要有本地主机管理员权限的域账号
# 执行需要本地主机开启powershell远程执行权限
# 引入需要变更密码的主机
$VMList = @('server1','server2','server3','server4')

# 设立一个函数来执行密码变更
function ChangeAdminPwd($VMName){
# 设定本地密码规则,非随机密码,便于使用passgen配合主机名和加盐规则推导主机密码
$LocalPwd = '#' + ((cmd /c "PassGen.exe -g $VMName billgate -l 20 -e 2") -split " ")[4]
# 将主机名和密码值并保存到本地文件
Write-Output $VMName $LocalPwd | Out-File -Append .\localpasswd.txt
# 使用net user Administrator 执行密码变更
$Job = { net user Administrator "$($args[0])" }
# 使用powershell的远程执行功能进行变更
Invoke-Command -ComputerName $VMName -ScriptBlock $Job -ArgumentList $LocalPwd
# 变更结果导出到本地文件,已进行确认变更结果
Write-Output $VMName is $? | Out-File -Append .\checkhost.txt
}

# 循环执行上述函数
ForEach ( $VMName in $VMlist){
ChangeAdminPwd($VMName)
}