﻿# 如何使用命令列工具 net / WMIC 快速建立 Windows 系統帳戶

我通常都會將一些常用的系統管理操作步驟寫成批次檔或 Powershell 以簡化操作的時間與提高操作的正確性與一致性，例如我所管理的壹台虛擬主機就經常需要建立系統帳戶、網站站台等，這些例行的工作如果透過 GUI 來操作就必須整理好長一段 SOP 而且交給其他人還有可能會做錯，這時若能寫成批次檔就能夠快速且完整的完成工作，完全沒有人為失誤的機會。但就建立系統帳戶來說，若要透過指令列的方式建立必須特別小心**密碼過期**的問題！

首先，我們先來看看如何透過 **net user** 指令新增一個帳戶：

```
net user TestUserName Pa$$w0rd /add /fullname:"TestUserName" /EXPIRES:NEVER /PASSWORDCHG:NO
```

由於我建立帳號的目的是「系統帳戶」之用，所以不需要讓該帳號有變更密碼的權力，而且我們也不希望該使用者的帳戶會過期而導致系統服務發生異常，所以我才會多設定了兩個 **/EXPIRES:NEVER** 參數與另一個 **/PASSWORDCHG:NO** 參數，帳戶建立好之後其設定屬性定義如下圖示：

![alt](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/2e2672d3fe601dea4fd6-image_388.png "title")

不過，雖然我們已經下達了 **/EXPIRES:NEVER** 參數來建立帳號，但這個選項最主要的目的是用來定義「帳戶是否在指定時間內自動設為停用」的設定，事實上在 Windows 系統裡還有個「密碼最長有效期」的限制，在 **本機安全性設定** 的在「密碼原則」中所定義的「密碼最長有效期」預設是 42 天，也就是如果你沒有注意到這一項的話，你的系統帳戶在建立完成後的第 42 天就會發生帳戶無法登入的情況！

![alt](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/ad3f9fb227c90883df2d-image_389.png "title")

為了解決這個問題，我們有兩個管道可以設定：

1.  修改本機安全性設定
2.  設定該帳戶「密碼永久有效」

其設定方式如下：

**1\. 修改本機安全性設定**

我們可以透過「本機安全性設定」的方式來設定「密碼最長有效期」為 0 即代表本機系統所有帳戶的密碼都永不過期，另外你也可以透過指令列的方式快速設定：

```
net accounts /maxpwage:unlimited
```

![alt](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/6a61fd88d57a7aa92bf6-image_390.png "title")

**2\. 設定該帳戶「密碼永久有效」**

設定該帳戶「密碼永久有效」的方式是我比較推薦的方式，安全性較高，但要修改特定帳號的帳號永久有效無法透過 net user 指令來設定，而必須改用更強的 **[WMIC.exe](http://technet.microsoft.com/zh-tw/library/cc784189\(WS.10\).aspx)** 命令列工具來直接操作 **WMI** (Windows Management Instrumentation)，以下是指令範例：

```
WMIC USERACCOUNT WHERE "Name='TestUserName'" SET PasswordExpires=FALSE
```

在該指令執行完成之後，該使用者的「密碼永久有效」屬性就會被勾選起來：

![alt](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/45b0352f1b2fc93b8ffd-image_391.png "title")

如此一來，透過命令列工具建立「系統帳戶」的任務就大功告成，而且帳號也不會再過期了！ ^\_^

之外我再分享另一個常用的命令，也就是將帳戶 ( TestUserName ) 加入到特定本機群組 ( IIS\_WPG ) 的指令範例，如下：

```
net localgroup IIS_WPG TestUserName /add
```

注意：加入本機群組必須使用 net localgroup 而不能使用 net group，且 net group 指令只能在網域主控站上使用，用法語 localgroup 一模一樣。

將使用者帳戶從群組刪除的範例如下：

```
net localgroup IIS_WPG TestUserName /delete
```

**相關連結**

-   [Windows Management Instrumentation 命令列](http://technet.microsoft.com/zh-tw/library/cc784189.aspx)
-   [Windows Server 2003 安全性指南 - 第 3 章：網域原則](http://technet.microsoft.com/zh-tw/library/cc163113.aspx)
-   [Windows Management Instrumentation - Wikipedia, the free encyclopedia](http://en.wikipedia.org/wiki/Windows_Management_Instrumentation_Command-line)
-   [WMIC - Take Command-line Control over WMI](http://technet.microsoft.com/en-us/library/bb742610.aspx)
-   [WMIC.exe](http://ss64.com/nt/wmic.html)
-   [WMIC 入门指导](https://web.archive.org/web/20110821004712/http://www.lemonsays.com:80/2010/04/windows-management-instrumental-conmmand-line-beginners-guide)
-   [WMIC 全新的超級指令行系統管理工具](http://forum.slime.com.tw/thread61654.html)
-   [Net localgroup](http://technet.microsoft.com/en-us/library/bb490706.aspx)
-   [Net group](http://technet.microsoft.com/en-us/library/bb490703.aspx)
