strComputer = "atl-fs-01"
Set objAdmins = GetObject("WinNT://" & strComputer & "/Administrators")
Set objGroup = GetObject("WinNT://fabrikam/finance")
objAdmins.Remove(objGroup.ADsPath)
是啊!很簡單,對不對?這段指令碼一開始先將電腦名稱 (在本範例中是 atl-fs-01) 指定給變數 strComputer。然後使用下列這行程式碼,繫結至該電腦上的本機系統管理員群組:
Set objAdmins = GetObject("WinNT://" & strComputer & "/Administrators")
一旦有了參考系統管理員群組的物件以後,下一步就是建立第二個物件參考,這是要移除群組的參考。下面的程式碼就是執行這個步驟:
Set objGroup = GetObject("WinNT://fabrikam/finance")
請注意,我們在參考群組帳戶時,是使用舊式的 Windows NT 命名慣例:fabrikam/finance。原因何在?其實很簡單:若要使用本機使用者和群組,必須使用 WinNT 提供者。WinNT 提供者不懂 Active Directory 的行話,分不清如下物件路徑的頭或尾:
cn=Finance Users, ou=Finance, dc=fabrikam, dc=com
因此,我們必須回頭使用舊式的帳戶名稱:網域名稱/登入名稱。可是沒關係:幸虧 Active Directory 也能夠了解這種命名慣例。當我們要求 fabrikam/finance 帳戶時,Active Directory 完全了解我們指的是什麼。
附註:下面這個問題以前也曾有人提出,但值得再重複說明一次。是的,您可以使用 WinNT 提供者,存取 Active Directory 中的物件,而且沒有錯,這種物件路徑確實也比較簡單。但千萬別因此而大意冒險,只有在絕對必要時,才使用 WinNT 提供者。原因何在?例如,LDAP 提供者一般配合 Active Directory 所使用的使用者帳戶可支援 200 個以上的屬性,而 WinNT 提供者僅支援大約 20 個左右。LDAP 提供者功能更強,也更實用。 |
有了該群組的物件參考以後,只需要呼叫 Remove 方法,就能將該群組從本機系統管理員群組移除:
objAdmins.Remove(objGroup.ADsPath)
我們還是覺得能夠從某人襯衫上扯掉他口袋上的護套,然後將他的訂書機頂著膝蓋折斷,這樣會比較酷,不過指令碼也行啦!
當然,您要移除的群組也可能不是 Active Directory 群組,而可能是本機群組。這樣會造成問題嗎?其實絕對不會造成問題,而會稍微更容易一點。只要直接繫結至本機電腦上的群組帳戶,然後讓它執行下列指令碼即可:
strComputer = "atl-fs-01"
Set objAdmins = GetObject("WinNT://" & strComputer & "/Administrators")
Set objGroup = GetObject("WinNT://finance")
objAdmins.Remove(objGroup.ADsPath)
順帶一提,用來從一個群組移除另一個群組的程序與用來從群組中移除使用者的程序完全一樣:先繫結至目標群組 (在本範例中是本機系統管理員群組),繫結至要移除的物件 (不管是群組或使用者都可以),然後再呼叫 Remove 方法,傳遞單一參數 ADsPath 來移除帳戶。 |