
ローカル マシン (ネットワークやドメインはなく、マシンのみ) のパスワードを %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 これらのスクリプトを「管理者として」実行します