ユーザー: バッチまたは 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 これらのスクリプトを「管理者として」実行します

関連情報