用於管理 Active Directory 的 11 個基本工具

概覽:
在命令行創建對象
在 Active Directory 中執行批量操作
Active Directory 更新和維護


如果您負責處理列有從下週開始工作的 200 名新員工資料的 Excel 電子表格,或者由於技術支持人員點擊了某些不應點擊的內容而導致用戶帳戶配置錯誤,
或者您只是需要除了打開“用戶和計算機”之外的一種更加輕鬆的方法來管理 Active Directory®,則有大量免費管理工具可以提供幫助。有些工具內置於 Windows® 操作系統中,有些位於資源工具包或 Windows 支持工具中,而有些甚至是免費的第三方工具。這些便捷工具都包括什麼,可以從何處獲取?讓我們來了解一下。
首先介紹 Windows Server® 2003 中的內置命令行工具,這些工具允許您在 Active Directory 中創建、刪除、修改和查找對象。

CSVDE
逗 號分隔值數據交換工具(即 CSVDE)允許您使用 CSV 源文件將新對象導入到 Active Directory 中;此外,該工具還提供了將現有對象導出到 CSV 文件的功能。CSVDE 不能用於修改現有對象;在導入模式下使用此工具時,您只能創建全新的對象。
使用 CSVDE 導出現有對象的列表相當簡單。將 Active Directory 對象導出到名爲 ad.csv 的文件,方法如下:
csvde –f ad.csv
–f 開關表示後面爲輸出文件的名稱。但是您必須注意,根據環境的不同,此基本語法可能會生成不實用的大型輸出文件。要將此工具限制爲僅導出特定組織單位 (OU) 中的對象,可以將語句修改爲如下形式:
csvde –f UsersOU.csv –d ou=Users,dc=contoso,dc=com
進一步假定您只對將用戶對象導出到 CSV 文件感興趣。如果是那樣的話,您可以添加 –r 開關和 –l 開關,前者允許指定輕型目錄訪問協議 (LDAP) 篩選器進行搜索,後者可以限制導出的屬性的數量(請注意以下所有內容位於一行):
csvde –f UsersOnly.csv –d ou=Users,dc=contoso,dc=com –r 
"(&(objectcategory=person)(objectclass=user))" –l
DN,objectClass,description
通過 –i 開關,您可以將對象從源 CSV 文件導入到 Active Directory。但是,使用 CSVDE 創建用戶對象存在一個關鍵限制:不能使用 CSVDE 設置用戶密碼。因此,應該避免使用 CSVDE 創建用戶對象。

LDIFDE
Active Directory 還提供了另外一個用於執行批量用戶操作的內置工具,稱爲 LDIFDE,與 CSVDE 相比,此工具更強大,更靈活。除了可以創建新對象外,LDIFDE 還可以修改和刪除現有對象,甚至擴展 Active Directory 架構。LDIFDE 雖然具有靈活性,但爲了實現這種靈活性卻必須要使用擴展名爲 .ldf 的 LDIF 文件作爲輸出文件,這種文件與簡單的 CSV 文件相比,格式更復雜。(只需少量操作就可以配置好用戶密碼,我稍後將對此進行介紹。)
我們從一個簡單的示例開始,將某個 OU 中的用戶導出到 LDF 文件中(請注意以下所有內容位於一行):
ldifde -f users.ldf -s DC1.contoso.com -d "ou=UsersOU,dc=contoso,dc=com"
–r "(&(objectcategory=person)(objectclass=user))"
與大多數命令行工具一樣,您可以通過運行 LDIFDE /? 命令找到 LDIFDE 開關的完整說明。圖 1 介紹了我在此使用過的開關。(注意 CSVDE 和 LDIFDE 命令的開關實際上是相同的。)
LDIFDE 的真正功能在於創建和操作對象。然而,進行此操作之前,您首先需要創建一個輸入文件。以下語句創建兩個名爲 afuller 和 rking 的用戶帳戶;要創建該輸入文件,請在記事本(或者您喜歡的純文本編輯器)中輸入以下文本,然後將其保存爲 NewUsers.ldf:
dn: CN=afuller, OU=UsersOU, DC=contoso, DC=com 
changetype: add
cn: afuller
objectClass: user
samAccountName: afuller

dn: CN=rking, OU=UsersOU, DC=contoso, DC=com
changetype: add
cn: rking
objectClass: user
samAccountName: rking
創建完該文件後,請運行以下命令:
ldifde –i –f NewUsers.ldf –s DC1.contoso.com
您可能會猜到,此處使用的唯一新開關 -i 表明這是一項導入操作而非導出操作。
如果要修改或刪除現有對象,不必更改 LDIFDE 命令的語法;相反,您應該修改 LDF 文件中的內容。要更改用戶帳戶的說明字段,請創建名爲 ModifyUsers.ldf 的文本文件,如圖 2 所示。
圖
圖 2 ModifyUsers LDF 文件 (單擊該圖像獲得較小視圖)
圖
圖 2 ModifyUsers LDF 文件 (單擊該圖像獲得較大視圖)
您可以通過運行與之前相同的 LDIFDE 命令語法,在 -f 開關後面指定新的 LDF 文件名來導入更改。用於刪除對象的 LDF 格式更簡單;要刪除一直使用的用戶,請創建一個名爲 DeleteUsers.ldf 的文件,然後輸入以下內容:
dn: CN=afuller OU=UsersOU, DC=contoso, DC=com 
changetype: delete

dn: CN=rking, OU=UsersOU, DC=contoso, DC=com
changetype: delete
注意,與 CSVDE 不同,LDIFDE 能夠配置用戶密碼。不過,在爲用戶帳戶配置 unicodePWD 屬性之前,必須在域控制器上配置安全套接字層/傳輸層安全性 (SSL/TLS) 加密。
而且,LDIFDE 能夠創建和修改任何類型的 Active Directory 對象,並不僅限於用戶帳戶。例如,下面的 LDF 文件可在 contoso.com 林的架構中創建名爲 EmployeeID-example 的自定義架構擴展:
dn: cn=EmployeeID-example,cn=Schema,
cn=Configuration,dc=contoso,dc=com
changetype: add
adminDisplayName: EmployeeID-Example
attributeID: 1.2.3.4.5.6.6.6.7
attributeSyntax: 2.5.5.6
cn: Employee-ID
instanceType: 4
isSingleValued: True
lDAPDisplayName: employeeID-example
由於 LDIFDE 文件使用工業標準 LDAP 文件格式,因此需要修改 Active Directory 架構的第三方應用程序會經常提供 LDF 文件,您可以在將這些更改應用於生產環境之前使用這些文件檢查和批准更改。
除 了用於執行批量導入和導出操作的工具外,Windows Server 2003 還包括一個內置工具集,您可以使用它來創建、刪除和修改各種 Active Directory 對象,還可以對符合特定條件的對象執行查詢。(請注意 Windows 2000 Active Directory 並不支持這些工具,如 dsadd、dsrm、dsget 和 dsquery 等。)

dsadd
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
您可以通過同時指定這兩個開關,將重命名和移動合併爲一個操作,如下所示:
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
您將會得到如圖 3 所示的輸出。
圖
圖 3 運行 dsget (單擊該圖像獲得較小視圖)
圖
圖 3 運行 dsget (單擊該圖像獲得較大視圖)
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"

一些第三方產品
由 於 Active Directory 基於 LDAP 標準,您可以使用任何支持 LDAP 的工具對其進行查詢和修改。許多第三方供應商已發佈了收費的工具,幫助您管理 Active Directory,但有時您會發現爲社區免費提供的極具價值的工具。目錄服務 MVP Joe Richards 創建的集合就是這種情況,可以從 joeware.net/freetools 下載。在那裏您將會發現大量具有不同功能的工具。我反覆使用的有 adfind、admod 和 oldcmp 這三種工具。

Adfind 和 Admod
Adfind 和 admod 類似於 dsquery 和 dsmod;adfind 是 Active Directory 的命令行查詢工具,admod 能夠創建、刪除或修改一個或多個 Active Directory 對象。
與具有多個子菜單並且開關依據對象類型而異的 ds* 工具不同,adfind 和 admod 具有一致的語法,與要嘗試執行的查詢或修改類型無關。adfind 的基本語法爲:
adfind –b <Search Base> -s <Search Scope> -f <Search Filter>
attributesDesired
所以對域中所有計算機對象的 DN 和說明的查詢應爲:
adfind –b dc=contoso,dc=com –s subtree –f (objectclass=computer) dn 
description
對所有用戶對象的查詢如下所示:
adfind –b dc=contoso,dc=com –s subtree –f "(&(objectcategory=person)
(objectclass=user))" dn description
注意,除了 LDAP 查詢的內容外,語法沒有任何更改。
使 用 adfind 時,您將發現許多快捷操作符,可以減少許多鍵入內容。例如,-default 開關可以取代上一示例中的 -b dc=contoso,dc=com 並搜索整個域;-gc 搜索垃圾收集 (GC) 並返回 Active Directory 林中所有的用戶。還可以使用 -rb 開關設置相對搜索庫;如果要在 phl.east.us.contoso.com 域中搜索 Training OU,您可以通過僅僅指定 –default –rb ou=Training,而非 –b ou=Training, dc=phl,dc=east,dc=us,dc=contoso,dc=com,從而減少許多工作量。
另外,adfind 還可以執行在命令行中不能輕鬆管理的許多高級搜索功能,如圖 4 所示。
使用 –asq 開關“顯示 HelpDesk 成員的組成員身份”的示例如下所示:
adfind –default –rb cn=HelpDesk,ou=IT –asq member memberOf
顧名思義,admod 用於修改 Active Directory 中的對象。與 adfind 一樣,不需要記住有特殊語法的特定子菜單;admod 在任何時候都使用相同的語法,與要處理的對象類型無關。還可以使用 admod 添加、移動、重命名、刪除甚至恢復對象,只需通過添加相應的開關(如 -add、-rm、-move、-undel)即可實現。就像 dsquery 和 dsmod 一樣,您也可以使用 | 字符將 adfind 查詢的結果通過管道傳送到 admod。
請注意,使用 admod 執行恢復操作只能執行邏輯刪除恢復操作,在此操作中大部分對象屬性已被刪除。要完全還原某個對象及其所有屬性,您仍需要執行該對象的授權還原。

Oldcmp
還有一個 joeware 工具,我認爲它是自動工具包中必不可少的一部分:oldcmp,該工具會掃描 Active Directory 數據庫,查找在指定週數內未使用的計算機帳戶,而且可以執行以下操作:
  • 創建帳戶報表而不對其進行任何操作
  • 禁用未使用的計算機帳戶
  • 將計算機帳戶移動到另一個指定的 OU 中
  • 完全刪除計算機帳戶
請 注意,由於 oldcmp 可能會嚴重損壞您的目錄,因此它有許多內置的安全功能。它不會刪除尚未禁用的任何帳戶(無需手動指定“No really, I mean it!”命令行開關)。無需指定類似的“No really, I mean it!”開關,每次修改對象不會超過 10 個,而且絕對不會對域控制器的計算機帳戶執行任何操作。
現在,儘管工具的名稱易於誤導,但是 Joe 已更新了 oldcmp,以便對在特定時間內未使用的用戶帳戶也能執行相似的功能。
對 於一個小型 Active Directory 環境或每次只執行一兩個添加或更改操作的環境,GUI 工具(如 Active Directory 用戶和計算機)可能足以滿足日常管理需要。但是,如果您每天都要添加和修改大量對象,或者只是需要更加簡化地管理任務解決方案,則改用命令行可以大大加快在 Active Directory 中創建、修改和刪除對象的過程。您已經瞭解到,有許多靈活且功能強大的工具可以免費獲得,它們或者內置於 Windows 中,或者可從 Active Directory 社區成員中下載。這些工具中的任何一個都能夠大大提高 Active Directory 管理員的工作效率,與此同時,它們在您的日常工作中變得更加必要。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章