Share via


嗨,Scripting Guy!

嗨,Scripting Guy!

歡迎使用 TechNet 專欄,Microsoft Scripting Guys 會在此為您解答有關系統管理指令碼的常見問題。您有關於系統管理指令碼方面的問題嗎?請將電子郵件傳送到 scripter@microsoft.com。我們無法保證能夠逐一回答每個問題,不過我們會盡力而為。

還有,別忘了瞧瞧全新經過改良的嗨,Scripting Guy!過往文件

今天的問題:如何列出 Active Directory 中 Computer 類別所使用的所有屬性?


如何列出 Active Directory 中 Computer 類別所使用的所有屬性?

嗨,Scripting Guy!我要如何列出 Active Directory 中 Computer 類別所使用的所有屬性?

-- KP

KP,您好。謝謝您提出的問題。答案是,沒錯,由我們其中一名 Scripting Guy 所訓練的柯特大聯盟棒球隊科克蘭熱火隊,贏得了上週的市冠軍,坐擁雙料季冠軍。而且冠軍賽的最後比數確實是 13 比 0,還有什麼其他要我們幫忙的嗎?

喔!對,您問的是指令碼的問題 (不熟悉寫指令碼的人,可能不知道我們是看棒球賽來消磨時間的)。看來有個 Scripting Guy 今天沒有好好專心做事 (也不知道為什麼今天是例外),不過還好這是個簡單的問題:重要的是,ADSI (用來存取 Actice Directory 的指令碼技術) 其中一項很酷的功能是,您可以寫 ADSI 指令碼告訴您使用 ADSI 能夠處理什麼指令碼。比方說,這個指令碼會傳回 Computer 類別所使用的全部屬性名稱:

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 是一種類別,所以自己有一組屬性,包括這兩個:MandatoryPropertiesOptionalProperties。MandatoryProperties 代表每個類別的執行個體 (在本例中,即 Computer 類別) 必須具有的屬性。當對著 Active Directory 執行指令碼時,會得到以下必要屬性的清單:

cn
instanceType
nTSecurityDescriptor
objectCategory
objectClass
objectSid
sAMAccountName

這些屬性大多數是由 Active Directory 自動指派,有幾個則不是,像是 cnsAMAccountName 就不是。也就是說,您必須在建立新的 Computer 物件時自行指派這些屬性,比方說要是漏掉了 sAMAccountName,指令碼就會失敗。

跟您預期的一樣,MandatoryProperties 是儲存成陣列 (因為會有超過一個必要屬性),所以我們使用 For Each 迴圈來循環處理所有屬性,並回應每個屬性名稱:

For Each strAttribute in objSchema.MandatoryProperties
    Wscript.Echo strAttribute
Next

就這麼簡單,再對 OptionalProperties (Computer 物件可以有,但不一定要有的屬性),進行相同的動作,就大功告成了。

順便一提,在對電腦的選用屬性清單執行迴圈時,會看到各種古怪的項目,像是呼叫器、住家電話啦,有多少部電腦會有自己的呼叫器或住家電話?信不信由您,這很正常,因為呢,Computer 類別是由 User 類別衍生而來的。這表示 Computer 類別具有 User 類別的所有屬性,外加一些其他電腦專屬的屬性,像是作業系統版本等。所以要是看到一些與電腦相關聯的怪怪屬性,像是縮寫、秘書之類的啦,別擔心,重要的是,對於選用屬性,您不想的話,不用管它們。

希望這有幫助,KP。還有誰想要聽柯克蘭熱火隊的戰績?有人嗎?哈囉?哈囉?


如需詳細資訊

查看嗨,Scripting Guy!- 過往文件

 

回到頁首 回到頁首