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

來源:互聯網
上載者:User
概覽:
在命令列建立對象在 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 管理員的工作效率,與此同時,它們在您的日常工作中變得更加必要

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.