用户:使用batch或powershell重置所有用户密码?


0

我需要将本地计算机(没有网络或域只是机器)上的密码批量重置为单个密码;例如%1Percent。我想知道这是否完全可能与批处理或电源shell或某种脚本。

Answers:


5

使用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,后者设置在第一个命令中输入的密码。


也许如果你可以为你的脚本添加解释会好吗?
Ob1lan

0

创建带扩展名的文本文件 cmdnuke_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."

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


我知道这种方式,但我正在处理可能数百个帐户。如果我不必一次做一个会更好。
TheiMacNoob

哦,这很有道理。我更新了我的答案,检查一下
Alex
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.