Share via


嗨,Scripting Guy!

嗨,Scripting Guy!

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

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

今天的問題:如何列出 OU 中的所有群組呢?


如何列出 OU 中的所有群組呢?

嗨,Scripting Guy!如何列出 OU 中的所有群組呢?

-- MK

MK,您好。您知道嗎?有時候,有人問了我們一個問題,然後緊接著就道歉說,不該問這個問題,認為所問的問題「對你們一定是太容易了」。其實呢,這就好像是在暗示,Scripting Guys 根本不是真有其人,而只是偉大的智慧能量體,整天閒閒沒事幹,就坐在那兒思索宇宙的奧秘。沒錯!就像從前的《星艦迷航記》電視影集的劇情,來自某星球的智慧生物進化到只有大腦,而不再需要身體。(Scripting Guys 中有些人確實也很希望能夠拋開身體這個臭皮囊,不過這又是另一回事了)。

如果說破真相呢,其實 Scripting Guys 最喜歡簡單的問題了!理由之一是,問題很簡單!即使是偉大的智慧能量體,偶而也該休息休息!而且呢,我們知道這些問題是本專欄很多其他讀者共通的疑問。(噯,我們是偉大的智慧能量體啊!當然是「無所不知」嘍!)所以呢,別擔心問題太簡單,不敢問;請盡量發問。至於您要是有艱深難解的問題呢,那就麻煩去求助《星艦迷航記》裡那些大腦生物吧!當然,我們本身也是能夠回答這些難題啦!只不過《星艦迷航記》電視影集 35 年前就停工不拍了,那些傢伙大概會需要工作。

那麼,到底怎麼列出 OU 中所有群組的完整清單呢?答案如下:

Set objOU = GetObject("LDAP://ou=Finance,dc=fabrikam,dc=com")
objOU.Filter = Array("Group")
For Each objGroup in objOU
    Wscript.Echo objGroup.Name
Next

我們先從繫結到 Active Directory 中的 Finance OU 著手。這個呢,順帶一提,又牽涉到另一個經常有人問起的問題:要如何繫結到位於另一個 OU 之中的 OU 呢?例如,假設 Finance OU 是位於稱為 NorthAmerica 的 OU 之中,那麼,該如何繫結到 Finance OU?

哇!真棒!一天之內解答「兩個」簡單的問題。若要繫結到子 OU,只要指定該 OU 的完整路徑就行了;也就是說:

Set objOU = GetObject("LDAP://ou=Finance,ou=NorthAmerica,dc=fabrikam,dc=com")

看到它是怎麼運作的吧?我們繫結到 Finance OU,它位於 NorthAmerica OU 之中,後者又位於 fabrikam.com 之中,諸如此類,依此類推...

連結到 OU 之後,我們就套用「篩選條件」,在本範例中,此條件會將傳回的資料限於群組帳戶:

objOU.Filter = Array("Group")

請注意,傳遞給篩選條件的值必須是陣列的形式。聽起來有點愚蠢,是吧?單單一個物件要用到陣列?但是這樣可以讓我們篩選多種物件類型。例如,假設您想要傳回一份群組和電腦的清單。此時,我們需要使用類似下面這段指令碼:

objOU.Filter = Array("Group", "Computer")

最後,設定 For Each 迴圈,再回應集合中的各個項目名稱;多虧有了這個篩選條件,集合中將只有群組帳戶。

現在呢,恕我們失陪,我們必須回去思索:為什麼壽司 – 生魚片 – 的價錢比同樣已經煮熟的魚貴上好幾倍?(當然啦!我們首先要設法解答,為什麼人要吃生魚?但是,即使再偉大的智慧能量體,也有照顧不到之處)。


如需詳細資訊

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

 

回到頁首 回到頁首