用户:使用批处理或 powershell 重置所有用户密码?

用户:使用批处理或 powershell 重置所有用户密码?

我需要在本地计算机(没有网络或域,只有计算机)上批量重置密码为单个密码;例如 %1Percent 。我想知道这是否可以通过批处理或 power shell 或某种脚本来实现。

答案1

使用 Powershell(需要管理员权限):

  • 从用户输入中获取新密码作为 SecureString
  • Get-Localuser 枚举所有本地用户并将其传送到
  • 检查要排除的用户的 where 子句
  • 其余用户通过管道传输到 Set-Localuser,以设置在第一个命令中输入的密码。

#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

答案2

创建带有扩展名的文本文件cmd,例如nuke_users_passwords.cmd

使用以下内容(根据需要替换用户名和密码)并运行它

@echo off
net user username1  new_password
net user username2  new_password
...
net user usernameN  new_password

另一个解决方案是使用威盛自动枚举本地用户并更改其密码。

以下是可以排除一些需要跳过的帐户的 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."

PS“以管理员身份”运行这些脚本

相关内容