
Preciso redefinir senhas em massa em uma máquina local (sem rede ou domínio, apenas a máquina) para uma única senha; como %1Percent . Eu queria saber se isso era possível com lote ou power shell ou algum tipo de script.
Responder1
Com Powershell (requer privilégios de administrador):
- obtenha a nova senha da entrada do usuário como SecureString
- Get-Localuser enumera todos os usuários locais e os encaminha para o
- cláusula where que verifica os usuários para excluir
- Os usuários restantes são canalizados para Set-Localuser, que define a senha inserida no primeiro comando.
#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
Responder2
Crie um arquivo de texto com extensão cmd
comonuke_users_passwords.cmd
com o seguinte conteúdo (substitua o nome de usuário e a senha conforme necessário) e execute-o
@echo off
net user username1 new_password
net user username2 new_password
...
net user usernameN new_password
Outra solução é usarWMIpara enumerar automaticamente usuários locais e alterar suas senhas.
Abaixo está o script VBS com capacidade de excluir algumas contas que precisam ser ignoradas. Salve-o como FileName.vbs
e execute-o "como administrador"
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 Execute esses scripts "como administrador"