Set objSchema = GetObject("LDAP://schema/computer")
Wscript.Echo "Mandatory attributes"
For Each strAttribute in objSchema.MandatoryProperties
Wscript.Echo strAttribute
Next
Wscript.Echo
Wscript.Echo "Optional attributes"
For Each strAttribute in objSchema.OptionalProperties
Wscript.Echo strAttribute
Next
指令碼開始會連接到本機網域的架構,接著繫結到 Computer 類別 (架構可想而知是一份主要清單,詳載著所有類別及其他能夠存放在 Active Directory 中物件,外加該些項目的所有屬性和方法)。這麼做之後,會得到 IADsClass 物件的執行個體,IADsClass 正如其名,包含著特定 Active Directory 類別的相關資訊。要是我們要的是 User 類別的相關資訊呢?簡單,就改繫結到該類別:
Set objSchema = GetObject("LDAP://schema/user")
如果要的是關於 organizationalUnit 類別的資訊,就用此段程式碼:
Set objSchema = GetObject("LDAP://schema/organizationalUnit")
瞧,很酷吧。
因為 IADsClass 是一種類別,所以自己有一組屬性,包括這兩個:MandatoryProperties 和 OptionalProperties。MandatoryProperties 代表每個類別的執行個體 (在本例中,即 Computer 類別) 必須具有的屬性。當對著 Active Directory 執行指令碼時,會得到以下必要屬性的清單:
cn
instanceType
nTSecurityDescriptor
objectCategory
objectClass
objectSid
sAMAccountName
這些屬性大多數是由 Active Directory 自動指派,有幾個則不是,像是 cn 和 sAMAccountName 就不是。也就是說,您必須在建立新的 Computer 物件時自行指派這些屬性,比方說要是漏掉了 sAMAccountName,指令碼就會失敗。
跟您預期的一樣,MandatoryProperties 是儲存成陣列 (因為會有超過一個必要屬性),所以我們使用 For Each 迴圈來循環處理所有屬性,並回應每個屬性名稱:
For Each strAttribute in objSchema.MandatoryProperties
Wscript.Echo strAttribute
Next
就這麼簡單,再對 OptionalProperties (Computer 物件可以有,但不一定要有的屬性),進行相同的動作,就大功告成了。
順便一提,在對電腦的選用屬性清單執行迴圈時,會看到各種古怪的項目,像是呼叫器、住家電話啦,有多少部電腦會有自己的呼叫器或住家電話?信不信由您,這很正常,因為呢,Computer 類別是由 User 類別衍生而來的。這表示 Computer 類別具有 User 類別的所有屬性,外加一些其他電腦專屬的屬性,像是作業系統版本等。所以要是看到一些與電腦相關聯的怪怪屬性,像是縮寫、秘書之類的啦,別擔心,重要的是,對於選用屬性,您不想的話,不用管它們。
希望這有幫助,KP。還有誰想要聽柯克蘭熱火隊的戰績?有人嗎?哈囉?哈囉? |