一、Dsadd 用于在特定的目錄分區上建立 Active Directory 對象類的執行個體。這些類包括使用者、計算機、聯系人、組、組織機關和配額。Dsadd 具備一個由下列内容組成的通用文法:
dsadd <ObjectType> <ObjectDistinguishedName> attributes
請注意,您建立的每個對象類型都有一組特定的開關,它們與該類型的屬性相對應。以下指令建立一個填充了各種屬性的使用者對象(請注意以下所有内容位于一行):
dsadd user cn=afuller,ou=IT,dc=contoso,dc=com
–samID afuller –fn Andrew –ln Fuller –pwd *
-memberOf cn=IT,ou=Groups,dc=contoso,dc=com "cn=Help Desk,ou=Groups,
dc=contoso,dc=com" –desc "Marketing Director"
–memberOf 開關要求指定應添加該使用者的每個組的完整可分辨名稱 (DN);如果要将使用者添加到多個組,您可以添加多個 DN 并用空格分隔開。
任何元素如果包含空格(如 Help Desk 組的 DN),則該元素應該括在雙引号中。如果某個元素含有反斜杠(如稱為 IT\EMEA 的 OU),則必須輸入兩次反斜杠:IT\\EMEA。(這些要求适用于所有的 ds* 工具。)
如果使用 -pwd * 開關,則系統将提示您在指令行輸入使用者密碼。您可以在該指令中指定密碼 (-pwd P@ssword1),但是這樣會在螢幕上或該指令嵌入到的任何文本或腳本檔案中以純文字形式顯示該密碼。
同樣,您可以使用下列兩個指令建立組對象和 OU:
複制代碼
dsadd computer cn=WKS1,ou=Workstations,dc=contoso,dc=com
dsadd ou "ou=Training OU,dc=contoso,dc=com"
二、Dsmod
Dsmod 用于修改現有對象,它的使用方法與 dsadd 非常相似,您需要根據要修改的對象的類型使用不同的子菜單和文法。以下 dsmod 語句會更改使用者的密碼并修改該使用者的帳戶,是以在下次登入時系統會提示該使用者更改為新的密碼:
dsmod user "cn=afuller,ou=IT,dc=contoso,dc=com" –pwd P@ssw0rd1 –mustchpwd yes
要了解這些開關多麼相似,您可以檢視要用于建立此使用者并配置了相同屬性的 dsadd 文法:
dsadd user "cn=afuller,ou=IT,dc=contoso,dc=com" –pwd P@ssw0rd1 –mustchpwd yes
您可以清晰地看到,如果知道 dsadd 中用于建立對象的開關,則可以使用那些相同的開關修改 dsmod 使用者。
三、dsrm
dsrm 與 dsadd 是相逆的;正如您可能想到的,使用此工具可從指令行中删除對象。基本的 dsrm 文法相當簡明:隻需輸入 dsrm 後輸入要删除對象的可分辨名稱即可,如下所示:
dsrm cn=WKS1,ou=Workstations,dc=contoso,dc=com
默
認情況下,dsrm 會提示“确實要删除此對象嗎?”,此時鍵入 Y,然後按 Enter。您可以使用 –noprompt
開關禁止顯示此提示,但很明顯,這樣做無法在删除對象之前确認所選對象是否正确。如果要删除容器對象(即,在其内部可能包含其他對象的組織機關),另外兩
個開關可能會很有用。以下指令将删除 TrainingOU 組織機關及其内部包含的所有對象:
dsrm ou=TrainingOU,dc=contoso,dc=com –subtree
以下指令将删除包含在 TrainingOU 中的所有子對象,但保留組織機關對象本身:
dsrm ou=TrainingOU,dc=contoso,dc=com –subtree –exclude
四、dsmove
要
移動或重命名 Active Directory 中的對象,請使用 dsmove
工具,但請注意您隻應使用該工具在單一域中移動對象。要在域和林之間遷移對象,請使用 Active Directory 遷移工具
(ADMT),可從 Microsoft 網站免費下載下傳。Dsmove 依賴于兩個開關,它們可以單獨使用,也可以結合在一起使用。以下指令将為
Steve Conn 的帳戶指定新姓氏:
dsmove "cn=Conn, Steve,ou=IT,dc=contoso,dc=com" –newname "Steve Conn"
以下指令将 Steve 的帳戶從 IT OU 移動到 Training OU:
dsmove "cn=Conn, Steve,ou=IT,dc=contoso,dc=com"–newparent ou=Training,dc=contoso,dc=com
以下指令将 Steve 的帳戶從 IT OU 移動到 Training OU:dsmove "cn=Conn, Steve,ou=IT,dc=contoso,dc=com" –newparent ou=Training,dc=contoso,dc=com
您可以通過同時指定這兩個開關,将重命名和移動合并為一個操作,如下所示:
dsmove "cn=Conn, Steve,ou=IT,dc=contoso,dc=com" –newname
"Steve Conn" –newparent ou=Training,dc=contoso,dc=com
五、Dsget 和 Dsquery
ds* 指令行工具集還包括兩個用于查詢 Active Directory 擷取資訊而非用于建立或修改對象的工具。
Dsget 将對象的 DN 作為輸入并為您提供您指定的一個或多個屬性的值。Dsget 使用與 dsadd 和 dsmod 相同的子菜單 — user、computer、contact、group、ou 和 quota。
要獲得使用者帳戶的 SAM 帳戶名和安全辨別符 (SID),請鍵入以下指令(請注意以下所有内容位于一行):
dsget user cn=afuller,ou=IT,dc=contoso,dc=com –samAccountName –sid
您将會得到如圖所示的輸出。
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiInBnauIzN2cTO5ITO3YDMyETOyMDM4ADMy8CXzADOwAjMvwFduVWboNWY0RXYvwVbvNmLvR3YxUjL5M3Lc9CX6MHc0RHaiojIsJye.jpg)
Dsquery 将傳回一個符合您指定條件的 Active Directory 對象的清單。無論您使用的是哪個子菜單,都可以指定以下參數:
dsquery <ObjectType> <StartNode> -s <Search Scope> -o <OutputFormat>
對
于 ObjectType,dsquery
可以使用以下子菜單,每個子菜單都具有自己的文法:computer、contact、subnet、group、ou、site、server(請注
意,伺服器子菜單檢索有關域控制器的資訊,而不是環境中的任一成員伺服器)、user、quota 和
partition。如果其中一個查詢類型不符合需要,您可以使用 * 子菜單,這樣您可以輸入任意格式的 LDAP 查詢。
StartNode
指定搜尋在 Active Directory 樹中的開始位置。您可以使用特定的 DN,如 ou=IT、dc=contoso、dc=com
或下列其中一個快捷說明符:domainroot,從特定域的根目錄開始;forestroot,從使用全局編錄伺服器執行搜尋的林根域的根目錄開始。
最
後,“搜尋範圍”選項指定 dsquery 搜尋 Active Directory 樹的方式。Subtree(預設方式)查詢指定的
StartNode 及其所有子對象;onelevel 僅查詢 StartNode 的直接子項;base 僅查詢 StartNode 對象。
為
了更好地了解搜尋範圍,假定有一個 OU,其中包含使用者對象和一個子 OU,該子 OU 自身又包含其他對象。使用 subtree 範圍将查詢該
OU、包含在該 OU 内的所有使用者對象和子 OU 及其内容。onelevel 範圍僅查詢包含在 OU 中的使用者而不查詢子 OU
及其内容。base 查詢僅搜尋 OU 本身而不查詢其中包含的任何對象。
最後,您可以使用 Output Format 控制如何設定 dsquery 的結果的格式。預設情況下,dsquery 将傳回與查詢相比對的所有對象的可分辨名稱,如下所示:
"cn=afuller,ou=Training,dc=contoso,dc=com"
"cn=rking,ou=ITTraining,ou=Training,dc=contoso,dc=com"
要查詢 IT OU 和任意子 OU 中包含的所有使用者對象,請使用以下指令:
dsquery user ou=IT,dc=contoso,dc=com
您可以通過添加其他開關進一步細化此查詢,如 -disabled(僅傳回已禁用的使用者帳戶)、-inactive x(僅傳回在過去 x 周或更久未登入的使用者)或 -stalepwd x(僅傳回在 x 天内或更久未更改其密碼的使用者)。
依
據目錄中對象的數目,在運作查詢時您可能需要指定 -limit x 開關。預設情況下,dsquery 将會傳回多達 100
個與查詢細節相比對的對象。您可以指定更大的數目(如 -limit 500),或使用 -limit 0 訓示 dsquery 傳回所有比對對象。
也可以使用其他子菜單執行對其他對象類型的有用查詢。考慮以下查詢,此查詢将傳回在 Active Directory 站點和服務中定義的位于 10.1.x.x 位址空間中的每個子網:
dsquery subnet –name 10.1.*
或使用以下指令傳回位于 Corp 站點中的每個子網:
dsquery subnet –site Corp
使用另一個子菜單,您可以很快确定林中配置為全局編錄伺服器的域控制器的數量:
dsquery server –forest –isgc
您還可以使用此文法幫助确定域中哪個域控制器承載主域控制器 (PDC) 模拟器靈活單主機操作 (FSMO) 角色:
dsquery server –hasfsmo pdc
與其他包含子菜單的 ds* 指令一樣,您可以轉到指令提示符并鍵入 dsquery user /?、dsquery computer /?、dsquery subnet /? 等檢視特定 dsquery 子菜單中可用的所有開關。
另
一個靈活的技巧是使用管道字元(在美式鍵盤上按下 shift 的同時按反斜杠即可)将 dsquery 的輸出通過管道傳送到其他工具(如
dsmod)中。例如,假設您的公司已将 Training 部門重命名為 Internal
Development,現在您必須将每位相關使用者的說明字段從舊部門名稱更改為新名稱。在單一指令行上,您可以查詢具有 Training
的說明字段的使用者對象,然後批量修改該說明字段,如下所示:
dsquery user –description "Training" | dsmod -description "Internal Development"