我通常都會將一些常用的系統管理操作步驟寫成批次檔或 Powershell 以簡化操作的時間與提高操作的正確性與一致性,例如我所管理的壹台虛擬主機就經常需要建立系統帳戶、網站站台等,這些例行的工作如果透過 GUI 來操作就必須整理好長一段 SOP 而且交給其他人還有可能會做錯,這時若能寫成批次檔就能夠快速且完整的完成工作,完全沒有人為失誤的機會。但就建立系統帳戶來說,若要透過指令列的方式建立必須特別小心密碼過期的問題!
首先,我們先來看看如何透過 net user 指令新增一個帳戶:
net user TestUserName Pa$$w0rd /add /fullname:"TestUserName" /EXPIRES:NEVER /PASSWORDCHG:NO
由於我建立帳號的目的是「系統帳戶」之用,所以不需要讓該帳號有變更密碼的權力,而且我們也不希望該使用者的帳戶會過期而導致系統服務發生異常,所以我才會多設定了兩個 /EXPIRES:NEVER 參數與另一個 /PASSWORDCHG:NO 參數,帳戶建立好之後其設定屬性定義如下圖示:
不過,雖然我們已經下達了 /EXPIRES:NEVER 參數來建立帳號,但這個選項最主要的目的是用來定義「帳戶是否在指定時間內自動設為停用」的設定,事實上在 Windows 系統裡還有個「密碼最長有效期」的限制,在 本機安全性設定 的在「密碼原則」中所定義的「密碼最長有效期」預設是 42 天,也就是如果你沒有注意到這一項的話,你的系統帳戶在建立完成後的第 42 天就會發生帳戶無法登入的情況!
為了解決這個問題,我們有兩個管道可以設定:
- 修改本機安全性設定
- 設定該帳戶「密碼永久有效」
其設定方式如下:
1. 修改本機安全性設定
我們可以透過「本機安全性設定」的方式來設定「密碼最長有效期」為 0 即代表本機系統所有帳戶的密碼都永不過期,另外你也可以透過指令列的方式快速設定:
net accounts /maxpwage:unlimited
2. 設定該帳戶「密碼永久有效」
設定該帳戶「密碼永久有效」的方式是我比較推薦的方式,安全性較高,但要修改特定帳號的帳號永久有效無法透過 net user 指令來設定,而必須改用更強的 WMIC.exe 命令列工具來直接操作 WMI (Windows Management Instrumentation),以下是指令範例:
WMIC USERACCOUNT WHERE "Name='TestUserName'" SET PasswordExpires=FALSE
在該指令執行完成之後,該使用者的「密碼永久有效」屬性就會被勾選起來:
如此一來,透過命令列工具建立「系統帳戶」的任務就大功告成,而且帳號也不會再過期了! ^_^
之外我再分享另一個常用的命令,也就是將帳戶 ( TestUserName ) 加入到特定本機群組 ( IIS_WPG ) 的指令範例,如下:
net localgroup IIS_WPG TestUserName /add
注意:加入本機群組必須使用 net localgroup 而不能使用 net group,且 net group 指令只能在網域主控站上使用,用法語 localgroup 一模一樣。
將使用者帳戶從群組刪除的範例如下:
net localgroup IIS_WPG TestUserName /delete
相關連結