我需要将本地计算机(没有网络或域只是机器)上的密码批量重置为单个密码;例如%1Percent。我想知道这是否完全可能与批处理或电源shell或某种脚本。
我需要将本地计算机(没有网络或域只是机器)上的密码批量重置为单个密码;例如%1Percent。我想知道这是否完全可能与批处理或电源shell或某种脚本。
Answers:
使用Powershell(需要管理员权限):
#Requires -RunAsAdministrator
$SecurePassword = Read-Host -Prompt "Enter password for all users" -AsSecureString
$Exclude="Administrator","Guest","DefaultAccount"
Get-LocalUser|
Where {$Exclude -notcontains $_.Name}|
Set-Localuser -password $SecurePassword
Get-Localuser枚举所有本地用户并将它们传递给
检查要排除的用户的where子句
剩余用户通过管道传送给Set-Localuser,后者设置在第一个命令中输入的密码。
创建带扩展名的文本文件 cmd
如 nuke_users_passwords.cmd
使用以下内容(根据需要替换用户名和密码)并运行它
@echo off
net user username1 new_password
net user username2 new_password
...
net user usernameN new_password
另一种解决方案是使用 WMI 自动枚举本地用户并更改其密码。
以下是能够排除某些需要跳过的帐户的VBS脚本。保存为 FileName.vbs
并以“管理员”身份运行
On Error Resume Next
strPasswd = "SuperPassword"
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery _
("Select * from Win32_UserAccount Where LocalAccount = True")
For Each objItem in colItems
Do While True
if objItem.Name = "Guest" then Exit Do ' Skip some account
if objItem.Name = "Administrator" then Exit Do ' Skip some account
if objItem.PasswordChangeable = False then Exit Do '
objItem.SetPassword strPasswd
objItem.SetInfo
Exit Do
Loop
Next
Wscript.Echo "Done."
附: 以“管理员”身份运行这些脚本