사용자: 배치 또는 Powershell을 사용하여 모든 사용자 비밀번호를 재설정하시겠습니까?

사용자: 배치 또는 Powershell을 사용하여 모든 사용자 비밀번호를 재설정하시겠습니까?

로컬 컴퓨터(네트워크나 도메인 없음)에서 암호를 단일 암호로 대량 재설정해야 합니다. 예를 들어 %1Percent . 일괄 처리나 파워 셸 또는 일종의 스크립트를 사용하여 이것이 가능한지 궁금합니다.

답변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

또 다른 해결책은 다음을 사용하는 것입니다.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."

PS 이 스크립트를 "관리자 권한으로" 실행하십시오.

관련 정보