所有 Tips 看這裡
 
Ucom Tips 本週主講名人
唐任威 老師 (Vincent Tang)
 
告別苦悶的日子(二):
Windows 2000 AD 環境中,以批次的方式進行使用者帳號的建立與管理
談LDIFDE指令的使用
 

該過的日子還是要過下去 <前言>
Hello~!大家好,又見面了,我是唐任威。這一陣子的日子不太好過吧!先是美國911恐怖攻擊的震撼、再來是納莉颱風在台灣的肆虐,最後再加上網路世界中的Nimda病毒的到處攻擊。我想每個人都有點沒力了∼吧!不過"該過的日子還是要過下去",這是我從警察伯伯身上學來的,為什麼這樣說呢?因為就在颱風過後宣布上班的第一天,我從高速公路北上台北,發現交通警察很努力的用著他的測速雷達捕捉著每一台車子的身影;同一天,我又南下新竹上課,又發現另一個交通警察也很努力的用著他的測速雷達也捕捉著每一台車子的身影。從這二個例子可以發現,日子雖苦,但是該過的日子還是要過下去!
ㄚ!∼離題了!∼言歸正傳,在經過上一次精"屁"的解說之後,不知道大家對於在Windows 2000 AD的網路環境中大量的建立使用者帳號有沒有一點小小的心得了。假如說上一次的介紹是入門班,那麼這一次的內容就是進階班了。這一次要來跟各位"屁"的是如何利用LDIFDE工具以批次的方式新增及修改使用者帳號中的屬性資料。什麼?隔太久了…忘記了…不會吧!…假如上一次介紹的內容已經忘了或是根本還沒有看過的話(有點遜喔…)那麼自己回頭review一下之前的文章吧!
  使用者帳號屬性資料的新增與修改
接下來讓我們介紹針對已經存在的使用者帳號,假如想要利用LDIFDE指令新增或修改其中的屬性資料,應該怎麼做: 首先第一步必須先建立一個LDIF的檔案,檔案的內容及格式如下:
dn: CN=Golden,OU=demo,DC=uuu,DC=com
changetype: modify
replace: l
l: Taipei
-
其中第一行"dn: CN=Golden,OU=demo,DC=uuu,DC=com"指定了要修改的使用者物件為Golden,接下來第二行"changetype: modify"宣告了這一整筆紀錄是要用來修改AD的資料,第三行則指定了到底要修改的屬性欄位是那一個,在這一個例子中,我們所指定的是位於使用者帳號物件"地址"標籤中的"縣/市"欄位,它在AD中的欄位名稱為l(是L(location),不是1234的1),因此第三行用"replace: l"來指定。最後,第四行則指定了l這一個欄位中新的值為Taipei,而且必須在次一行加上一個"-"才可以,這是檔案格式的規定。
第二步,我們把這個檔案匯入AD,指令如下:
C:\DEMO>ldifde -i -f modify.ldf
Connecting to "dc01.uuu.com
"Logging in as current user using SSPI
Importing directory from file "modify.ldf"
Loading entries..
1 entry modified successfully.

The command has completed successfully
那麼一切就搞定了,結果如下:
帥吧!接下來要做的就是把一些常用的屬性在AD中的欄位名稱給查出來,為了秉持著讓各位"不只賺到,而且要賺到翻掉"的精神,因此唐老師再一次的買一送一,把一些常用的欄位名稱給整理出來供各位參考:
標籤名稱 AD屬性的中文顯示名稱 AD屬性的英文顯示名稱 AD屬性的欄位名稱
一般/General 姓氏 First name sn
名字 Last name givenName
英文縮寫 Initials initials
顯示名稱 Display name displayName
描述 description description
辦公室 Office physicalDeliveryOfficeName
電話號碼 Telephone Number telephoneNumber
電子郵件 E-mail mail
網頁 Web page wWWHomePage
地址/Address 國家(地區) Country/region c
省份 State/province st
縣/市 City l
街道 Street streetAddress
郵遞區號 Zip/Postal Code postalCode
郵政信箱 P.O. Box postOfficeBox
帳戶/Account 使用者登入名稱 User logon name userPrincipalName
使用者登入名稱(Windows 2000前版) User logonname(pre-Windows 2000) sAMAccountName
設定檔/Profile 設定檔路徑 Profile path profilePath
登入指令檔 Logon script scriptPath
主資料夾 Home folder homeDirectory
電話/Telephones 住宅 Home homePhone
呼叫器 Pager pager
行動電話 Mobile mobile
傳真 Fax facsimileTelephoneNumber
IP電話 IP phone ipPhone
注意事項 Notes info
組織/Organization 職稱 Title title
部門 Department department
公司 Company company
主管 Manager manager
屬下 Direct report directReports
好!有了以上的資料,接下來我們就可以把需要修改屬性的帳號編輯成一個完整的LDIF檔案,然後再匯入AD的環境之中。 檔案的內容如下:
dn: CN=Danny,OU=demo,DC=uuu,DC=com
changetype: modify
replace: description
description: 淘氣阿丹
-
replace: physicalDeliveryOfficeName
physicalDeliveryOfficeName: 中壢
-
dn: CN=Golden,OU=demo,DC=uuu,DC=com
changetype: modify
replace: description
description: 阿路
-
replace: physicalDeliveryOfficeName
physicalDeliveryOfficeName: 新竹
-

dn: CN=Vincent,OU=demo,DC=uuu,DC=com
changetype: modify
replace: description
description: 阿威
-
replace: physicalDeliveryOfficeName
physicalDeliveryOfficeName: 新竹
-

dn: CN=Ming,OU=demo,DC=uuu,DC=com
changetype: modify
replace: description
description: 無法描述
-
replace: physicalDeliveryOfficeName
physicalDeliveryOfficeName: Some where
-
接下來執行匯入:
C:\DEMO>ldifde -i -f modify_all.ldf
Connecting to "dc01.uuu.com"
Logging in as current user using SSPI
Importing directory from file "modify_all.ldf"
Loading entries..
4 entry modified successfully.

The command has completed successfully
匯入的結果,我們可以利用Active Directory Users and Computers管理工具來給他喵一下:
YA!Ya~!ya~~!大功告成了!辛苦了那麼久,給自己拍拍手吧!
 
  使用者帳號的匯出
什麼!嫌LDIF檔案的字太多!不想打!…沒辦法∼誰叫你不會寫程式呢!假如你會寫程式的話,你可以利用簡單的VBScript去呼叫ADSI的API,直接把這些重複性的動作做完,就OK了。好吧!沒辦法了,為了秉持著"不只賺到,而且要賺到翻掉"的精神,唐老師只好再教另外一招,讓你們"賺到翻過去,又翻回來"。
基本上LDIFDE這一個指令除了可以將資料匯入AD之外,它還可以AD的資料匯出。舉例如下:
C:\DEMO>ldifde -f export.ldf -u -d ou=demo,dc=uuu,dc=com -r objectClass=user -l
dn,displayname
Connecting to "dc01.uuu.com"
Logging in as current user using SSP
IExporting directory to file export.ldf
Searching for entries...
Writing out entries....
4 entries exported

The command has completed successfully
其中:
  • -f指定了匯出檔案的名稱。
  • -u指定了匯出檔案的編碼格式為Unicode,假如匯出的資料中包含了中文,那麼這一個參數一定要指定,否則匯出的資料會變成亂碼。
  • -d的功能在設定匯出的範圍,假如不指定的話LDIFDE指令會把AD中所有的資料匯出。
  • -d 的後面空一格直接接要匯出範圍的distinguished name。例如:-d ou=demo,dc=uuu,dc=com,代表要匯出的部分為uuu.com AD domain下的demo OU。
  • -r指定的是匯出AD的物件類型,不指定的話代表要LDIFDE指令把AD中所有的物件通通匯出。
  • -r ObjectClass=user表示要匯出的物件類型為使用者物件。
  • 最後-l代表要匯出該物件的那一個屬性。不指定的話則所有的屬性都會被匯出。屬性與屬性之間用逗號(",")來區隔。例如:-l dn,displayname 代表要匯出的屬性只有distinguished name及顯示名稱。
匯出的結果如下:
dn: CN=Danny,OU=demo,DC=uuu,DC=com
changetype: addd

n: CN=Golden,OU=demo,DC=uuu,DC=com
changetype: add
displayName: Golden Liu

dn: CN=Vincent,OU=demo,DC=uuu,DC=com
changetype: add
displayName: Vicnent Tang

dn: CN=Ming,OU=demo,DC=uuu,DC=com
changetype: add
displayName: 王小明
所以只要再將這個檔案加以修飾就可以了。例如在Notepad中,用”取代”的功能將"add"變為"modify"、再加上適當的"replace:…"及"-"就可以了。雖然不像寫程式那麼方便,但是至少可以少打一點字。修飾過的檔案如下:
dn: CN=Danny,OU=demo,DC=uuu,DC=com
changetype: modify
replace: displayName
displayName: 范丹尼
-

dn: CN=Golden,OU=demo,DC=uuu,DC=com
changetype: modify
replace: displayName
displayName: 留金塊
-

dn: CN=Vincent,OU=demo,DC=uuu,DC=com
changetype: modify
replace: displayName
displayName: 唐梵谷
-

dn: CN=Ming,OU=demo,DC=uuu,DC=com
changetype: modify
replace: displayName
displayName: Ming wang
-
接下來,只要再將這個檔案匯入AD就可以了。
 
  使用者帳號的刪除
最後唐老師再奉送一個如何利用LDIFDE指令刪除使用者帳號的介紹吧!什麼!不用介紹了!直接打開Active Directory Users and Computers管理工具,把要刪除的帳號利用滑鼠搭配Ctrl鍵或Shift鍵先選好,然後點選工具列上的大χχ把帳號刪除就可以了。我知道是很簡單啦!可是要學就一次學完啊!這才是正確的學習觀念嘛! 好廢話不多說,先參考以下的實例:
在我的del OU下共有10個使用者帳號,我們先建立一個LDIF的檔案如下(你可以先匯出,再加以修改):
dn: CN=User01,OU=del,DC=uuu,DC=com
changetype: delete

dn: CN=User02,OU=del,DC=uuu,DC=com
changetype: delete

dn: CN=User03,OU=del,DC=uuu,DC=com
changetype: delete
 

dn: CN=User09,OU=del,DC=uuu,DC=com
changetype: delete

dn: CN=User10,OU=del,DC=uuu,DC=com
changetype: delete
接下來只要下指令把這個檔案匯入AD就可以了:
C:\DEMO>ldifde -i -f del.ldf
Connecting to "dc01.uuu.com"
Logging in as current user using SSPI
Importing directory from file "del.ldf"
Loading entries..........

.10 entries modified successfully.
The command has completed successfully
匯入之後的結果如下:
怎麼樣,都清潔溜溜了吧!基本上大量使用者帳號的刪除是可以直接利用操作介面來完成的。但是假如你想換個方式來刪除帳號或是其他的AD物件,這也是個不錯的方法!
下次再見…
關於LDIFDE這個指令,其實它的功用很大,就看你要怎麼去用它。可是不管你要怎麼用,基本的原則是對於Windows 2000 AD的結構要有某些程度的了解,否則的話就只會淪於一般的操作而已。至於應該如何了解AD…嘿嘿嘿…當然是來上課最快嘍!其實也不是因為我們自己在開班所以才叫你們來上課,實在是因為Windows 2000 AD的環境實在是太大了,絕非三言二語可以講完。假如要自己摸索的話,那要摸索到什麼時候呢!?到不如來上課效率還比較好,畢竟人家整理過的東西要吸收也比較快,現在可是個講究效率的時代喔,你說對嗎?
不過該提醒各位的還是要說,由於LDIFDE指令功能強大,因此在你使用LDIFDE指令之前,請先確定不會因為LDIF檔案的編輯錯誤而導致後續的誤動作發生。因為一但做錯了任何的設定,不管嚴重與否,補救起來都是很麻煩的。因此建議各位,在做任何動作之前,請先在測試用的環境中測試無誤,或是將系統備份後,再執行動作,以免造成困擾。 好吧!這一次精"屁"的說明就到此為止,我們下次再見嘍!拜拜!

  Ucom Tips 本週主講名人: 唐任威 老師 (Vincent Tang)
  專  長:
  1. NT 4.0網路環境整合規劃,Windows 2000主動式目錄服務及網路環境整合規劃
  2. Exchange訊息系統設計與建置,MS Proxy及ISA Server防火牆規劃與建置
  3. IIS網站系統規劃與建置,indows 2000虛擬私人網路(VPN)環境整合與規劃建置
  4. 微軟叢集伺服器網路環境建置
  5. 趨勢科技全方位企業防毒解決方案規劃與建置
  6. PC Server作業環境規劃與建置
  7. Storage Area Network系統規劃與建置
  8. Enterprise Backup Solution建置與規劃
  9. 網際網路及區域網路作業環境規劃與建
  認  證: MCSE 、MCP、MCP+I、Compaq ASE、TCSE