2013-07-17 86 views
0

好吧,我需要一些批處理腳本專家來幫助我走出自己投入的角落。在命令提示符處更改所有用戶帳戶的密碼

我有一個作爲系統運行的程序,我想更改net用戶輸出中出現的所有帳戶的密碼。我不太清楚如何通過命令行或基於AHK的腳本來實現這一點。

當我執行net user命令的輸出是這樣對我說:

C:\Users\Resident>net user 

User accounts for \\9100BASELINE 

------------------------------------------------------------------------------- 
Administrator   Guest     Resident 
The command completed successfully. 

我需要一些方法來對所有帳戶在這裏更改密碼(無論是3或50)的東西我選擇。

任何人都可以幫我解決這個問題嗎?我試着將一個for循環放在一起,每個項目都是一個標記,然後才意識到我不知道如何將用戶名從那裏表示出來。

回答

1

我建議使用一個小的VBScript的幫助:

Set accounts = GetObject("WinNT://.") 
accounts.Filter = Array("user") 
For Each user In accounts 
    WScript.Echo user.Name 
Next 

保存爲listusers.vbs像這樣運行:

@echo off 

setlocal 

set /p "newpw=Enter new password: " 

for /f "delims=" %%u in ('cscript //NoLogo C:\path\to\listusers.vbs') do (
    net user "%%u" "%newpw%" 
) 

編輯:如果你想要省略正在處理的特定帳戶,您可以將排除列表添加到VBScript中:

Set exclude = CreateObject("Scripting.Dictionary") 
exclude.CompareMode = vbTextCompare 
exclude.Add "HomeGroupUser$", True 
exclude.Add "otheruser", True 
... 

Set accounts = GetObject("WinNT://.") 
accounts.Filter = Array("user") 
For Each user In accounts 
    If Not exclude.Exists(user.Name) Then WScript.Echo user.Name 
Next 

或過濾的listusers.vbsfindstr輸出:

for /f "delims=" %%u in (
    'cscript //NoLogo C:\path\to\listusers.vbs ^| findstr /v /i^
    /c:HomeGroupUser$ /c:otheruser ...' 
) do (
    net user "%%u" "%newpw%" 
) 
+0

這是勝利。 –

+0

我唯一關心的是它抓住了$ homegroup以及所有其他用戶......我並不在意,因爲我沒有任何聯網設備。但這對某些人來說可能是一種痛苦。 –

1

可以實際上一批這樣做純粹。

最簡單的方法是列出所有的文件夾:

cd C:\Users 
dir /b /o:n /ad > users.txt 

之後,你會使用一個for循環,設置一個密碼在用戶目錄中的每個用戶,並確保了腳本不會嘗試爲公用文件夾設置密碼,因爲它不是用戶。

它會是這樣的:

for /f %%i in ('type C:\Users\users.txt') do(
if not %%i==Public (
net user %%i [Insert Password Here] 
) 
) 

從技術上講,你實際上並不需要檢查額外的非用戶文件夾,CMD實際上不會造成任何問題,如果它試圖設置一個密碼對於非用戶文件夾。

相關問題