嗨,Scripting Guy!

嗨,Scripting Guy!

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

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

今天的問題:如何新增網域群組至本機管理員群組?


如何新增網域群組至本機管理員群組?

嗨,Scripting Guy!如何新增網域群組至本機管理員群組?

-- SS

SS,您好。你知道嗎?一般人都以為 Scripting Guys 是昂首闊步穿梭在系統管理指令碼處理的世界裡,信心滿滿地,幾乎是以所擁有的知識為傲,能夠解決衝著他們而來的任何挑戰。我們也剖以此自居,雖然心裡明知道其實並不是如此。充滿自信,幾乎是以所擁有的知識為傲,能夠解決衝著我們而來的任何挑戰?哎…

就拿這個問題來說吧!前不久我們才回答了一個類似的問題,說明如何將網域使用者加入至電腦上的本機管理員群組中。我們本來以為,如果有人回應,我們應該會接到幾封電子郵件,表示:「感謝您,消除了我心中的疑團。」結果卻是電子郵件如雪片般飛來,詢問:「好,我懂了。可是,如何新增網域群組至本機管理員群組呢?」這反而讓我們有點擔心了!難道說,必須使用不同的手法,才能將網域群組加入至本機系統管理群組嗎?老天啊!那到底如何新增網域群組至本機管理員群組呢?

面對衝著我們直來的挑戰,我們處變不驚,照常使出老招數:裝做沒事人一樣,就好像問題從來都不存在。但是過去幾週以來,我們接到更多跟這個主旨有關的電子郵件,所以就決定該硬著頭皮接受挑戰了。

您猜發生了什麼事?結果呢,將網域群組加入至本機管理員群組的方法,就跟將網域使用者加入至本機管理員群組完全一樣:

strComputer = "atl-ws-01"
Set objAdmins = GetObject("WinNT://" & strComputer & "/Administrators")
Set objGroup = GetObject("WinNT://fabrikam/accounting")
objAdmins.Add(objGroup.ADsPath)

這個指令碼開始先指定本機電腦的名稱 (在本範例中就是 atl-ws-01) 給稱為 strComputer 的變數。然後我們使用這行程式碼,繫結至 atl-ws-01 上的本機管理員群組:

Set objAdmins = GetObject("WinNT://" & strComputer & "/Administrators")

接下來這部分就有點複雜了,我們必須繫結至網域群組,建立第二個物件參考。一般而言,您會使用如下的 ADsPath 來繫結至 Active Directory 中的群組:

Set objGroup = GetObject("LDAP://cn=accounting, ou=finance, dc=fabrikam, dc=com")

但是,我們不能在此指令碼裡使用那種繫結字串。為什麼不行?哦,因為我們是使用本機帳戶 (本機管理員群組),因此必須使用 WinNT 提供者;不管好壞,反正 WinNT 提供者是完全搞不懂 cn=accounting, ou=finance, dc=fabrikam, dc=com 到底是什麼意思。因此,我們必須使用老式的 Windows NT 4.0 繫結字串,以 domain_name/logon_name 格式進行連接:

Set objGroup = GetObject("WinNT://fabrikam/accounting")

這雖然不是我們一般慣用的手法,可是很管用。


注意:好啦!Scripting Guys,看起來使用 WinNT 提供者繫結至 Active Directory 是比使用 LDAP 提供者繫結至 Active Directory 更容易,那如果是這樣,我們何不乾脆一直使用 WinNT 提供者繫結至 Active Directory 物件呢?很簡單,如果使用 LDAP 提供者繫結至 Active Directory 物件,就可以存取該物件的所有 Active Directory 屬性,以使用者帳戶來說,您可以讀寫 200 個以上的屬性。但是,如果使用 WinNT 提供者,則只能存取該物件的 Windows NT 屬性,以使用者帳戶來說,大概只有 20 個左右的屬性。若要取得物件的 Active Directory 屬性,就必須使用 LDAP 提供者。在這裡我們可以使用 WinNT 提供者的原因在於:我們只需要物件參考,而不需要與帳戶相關連的任何屬性。


只要一取得 WinNT 提供者所能瞭解的物件參考,則只需要呼叫「Add」方法,就可將網域群組加入至本機管理員群組:

objAdmins.Add(objGroup.ADsPath)

我們老早就知道這個辦法行得通!

嗯,沒錯啦!是我們老早就料到這個辦法行得通。

哦,好吧!是我們一直都「希望」這個辦法行得通。

哎呀,是啦,這個辦法就是 …反正總而言之,這個辦法確實管用。這才是真正的重點。


如需詳細資訊

請參閱嗨,Scripting Guy!- 過往文件

 

回到頁首 回到頁首