要移動(dòng)或重命名 Active Directory 中的對象,請使用 dsmove 工具,但請注意您只應(yīng)使用該工具在單一域中移動(dòng)對象。要在域和林之間遷移對象,請使用 Active Directory 遷移工具 (ADMT),可從 Microsoft 網(wǎng)站免費(fèi)下載。Dsmove 依賴于兩個(gè)開關(guān),它們可以單獨(dú)使用,也可以結(jié)合在一起使用。以下命令將為 Steve Conn 的帳戶指定新姓氏:
dsmove "cn=Conn, Steve,ou=IT,dc=contoso,dc=com" –newname "Steve Conn"
以下命令將 Steve 的帳戶從 IT OU 移動(dòng)到 Training OU:
dsmove "cn=Conn, Steve,ou=IT,dc=contoso,dc=com" –newparent ou=Training,dc=contoso,dc=com
您可以通過同時(shí)指定這兩個(gè)開關(guān),將重命名和移動(dòng)合并為一個(gè)操作,如下所示:
dsmove "cn=Conn, Steve,ou=IT,dc=contoso,dc=com" –newname "Steve Conn" –newparent ou=Training,dc=contoso,dc=com
Dsget 和 Dsquery
ds* 命令行工具集還包括兩個(gè)用于查詢 Active Directory 獲取信息而非用于創(chuàng)建或修改對象的工具。
Dsget 將對象的 DN 作為輸入并為您提供您指定的一個(gè)或多個(gè)屬性的值。Dsget 使用與 dsadd 和 dsmod 相同的子菜單 — user、computer、contact、group、ou 和 quota.
要獲得用戶帳戶的 SAM 帳戶名和安全標(biāo)識符 (SID),請鍵入以下命令(請注意以下所有內(nèi)容位于一行):
dsget user cn=afuller,ou=IT,dc=contoso,dc=com –samAccountName –sid
您將會(huì)得到如圖 2所示的輸出。
圖 2 運(yùn)行 dsget
Dsquery 將返回一個(gè)符合您指定條件的 Active Directory 對象的列表。無論您使用的是哪個(gè)子菜單,都可以指定以下參數(shù):
dsquery <ObjectType> <StartNode> -s <Search Scope> -o <OutputFormat>
對于 ObjectType,dsquery 可以使用以下子菜單,每個(gè)子菜單都具有自己的語法:computer、contact、subnet、group、ou、site、server(請注意,服務(wù)器子菜單檢索有關(guān)域控制器的信息,而不是環(huán)境中的任一成員服務(wù)器)、user、quota 和 partition.如果其中一個(gè)查詢類型不符合需要,您可以使用 * 子菜單,這樣您可以輸入任意格式的 LDAP 查詢。
StartNode 指定搜索在 Active Directory 樹中的開始位置。您可以使用特定的 DN,如 ou=IT、dc=contoso、dc=com 或下列其中一個(gè)快捷說明符:domainroot,從特定域的根目錄開始;forestroot,從使用全局編錄服務(wù)器執(zhí)行搜索的林根域的根目錄開始。
最后,“搜索范圍”選項(xiàng)指定 dsquery 搜索 Active Directory 樹的方式。Subtree(默認(rèn)方式)查詢指定的 StartNode 及其所有子對象;onelevel 僅查詢 StartNode 的直接子項(xiàng);base 僅查詢 StartNode 對象。
為了更好地理解搜索范圍,假定有一個(gè) OU,其中包含用戶對象和一個(gè)子 OU,該子 OU 自身又包含其他對象。使用 subtree 范圍將查詢該 OU、包含在該 OU 內(nèi)的所有用戶對象和子 OU 及其內(nèi)容。onelevel 范圍僅查詢包含在 OU 中的用戶而不查詢子 OU 及其內(nèi)容。base 查詢僅搜索 OU 本身而不查詢其中包含的任何對象。
最后,您可以使用 Output Format 控制如何設(shè)置 dsquery 的結(jié)果的格式。默認(rèn)情況下,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
您可以通過添加其他開關(guān)進(jìn)一步細(xì)化此查詢,如 -disabled(僅返回已禁用的用戶帳戶)、-inactive x(僅返回在過去 x 周或更久未登錄的用戶)或 -stalepwd x(僅返回在 x 天內(nèi)或更久未更改其密碼的用戶)。
依據(jù)目錄中對象的數(shù)目,在運(yùn)行查詢時(shí)您可能需要指定 -limit x 開關(guān)。默認(rèn)情況下,dsquery 將會(huì)返回多達(dá) 100 個(gè)與查詢細(xì)節(jié)相匹配的對象。您可以指定更大的數(shù)目(如 -limit 500),或使用 -limit 0 指示 dsquery 返回所有匹配對象。
也可以使用其他子菜單執(zhí)行對其他對象類型的有用查詢。考慮以下查詢,此查詢將返回在 Active Directory 站點(diǎn)和服務(wù)中定義的位于 10.1.x.x 地址空間中的每個(gè)子網(wǎng):
dsquery subnet –name 10.1.*
或使用以下命令返回位于 Corp 站點(diǎn)中的每個(gè)子網(wǎng):
dsquery subnet –site Corp
使用另一個(gè)子菜單,您可以很快確定林中配置為全局編錄服務(wù)器的域控制器的數(shù)量:
dsquery server –forest –isgc
您還可以使用此語法幫助確定域中哪個(gè)域控制器承載主域控制器 (PDC) 模擬器靈活單主機(jī)操作 (FSMO) 角色:
dsquery server –hasfsmo pdc
與其他包含子菜單的 ds* 命令一樣,您可以轉(zhuǎn)到命令提示符并鍵入 dsquery user /?、dsquery computer /?、dsquery subnet /? 等查看特定 dsquery 子菜單中可用的所有開關(guān)。
另一個(gè)靈活的技巧是使用管道字符(在美式鍵盤上按下 shift 的同時(shí)按反斜杠即可)將 dsquery 的輸出通過管道傳送到其他工具(如 dsmod)中。例如,假設(shè)您的公司已將 Training 部門重命名為 Internal Development,現(xiàn)在您必須將每位相關(guān)用戶的說明字段從舊部門名稱更改為新名稱。在單一命令行上,您可以查詢具有 Training 的說明字段的用戶對象,然后批量修改該說明字段,如下所示:
dsquery user –description "Training" | dsmod -description "Internal Development"