strComputer = "atl-ws-01"
Set objGroup = GetObject("WinNT://" & strComputer & "/Administrators")
Set objUser = GetObject("WinNT://" & strComputer & "/kenmyer")
objGroup.Add(objUser.ADsPath)
那麼這個指令碼有什麼問題?沒有問題,只是這可能不是最實用的範例。的確,這個指令碼顯示了如何對本機系統管理員群組新增其他本機使用者。這是可以接受的,不過大多數的人「真正」想要知道的 (我們可以由收到的電子郵件數目辨別這點),是如何對本機系統管理員群組新增「網域」使用者。我們收到的訊息十分清楚傳達:就讓我們示範如何對本機系統管理員群組新增網域使用者。
碰巧的是,進行此項的指令碼,幾乎和對系統管理員群組新增本機使用者的指令碼完全相同。目前我們唯一看到的差別,就發生在第 3 行。在先前的指令碼中,我們使用這行程式碼連結到電腦上的本機使用者帳戶:
Set objUser = GetObject("WinNT://" & strComputer & "/kenmyer")
然後,我們將該使用者帳戶的 ADsPath 傳遞到 Add 方法,就會將使用者新增到群組中:
objGroup.Add(objUser.ADsPath)
我們要讓新的指令碼具有相似作用,只是不要連結到本機使用者帳戶,而是要連結到網域使用者帳戶。所以我們要做的就是,以新的一行取代第 3 行:
Set objUser = GetObject("WinNT://fabrikam/kenmyer")
在此我們使用 WinNT 提供者來連結到 fabrikam 網域,更明確的說法是我們使用 WinNT 提供者來連結到 fabrikam 網域中的 kenmyer 使用者帳戶。我們可以料想到您們之中有些人不樂於見到這點。「為什麼他們要使用 WinNT 提供者?」您喃喃抱怨著。「他們在連結到 Active Directory 時不是應該使用 LDAP 提供者嗎?」
對於這個問題,「大多數時候」的答案都是肯定的。然而,假設我們使用 LDAP 提供者,使用如下的程式碼擷取 kenmyer 的 ADsPath:
Set objUser = GetObject("LDAP://CN=kenmyer,OU=Finance,dc=fabrikam,dc=com")
這樣「看起來」好像沒問題,只是我們會得到像以下型式傳回的 ADsPath:
LDAP://CN=kenmyer,OU=Finance,dc=fabrikam,dc=com
這樣也是可以 … 至少在您嘗試將這個值傳遞到本機電腦之前都還可行。請記得,本機電腦上的「安全性帳戶管理員」會以 WinNT 而不是 LDAP 的形式溝通。如果您嘗試將 LDAP 路徑傳遞到本機電腦,是不會產生作用的。
因此,我們必須傳遞如下的 ADsPath:
WinNT://fabrikam/kenmyer
您猜結果如何?如果使用 WinNT 提供者連結到 fabrikam 網域,我們就會得到這種 ADsPath。如果只有使用 Active Directory 工作,您就應該使用 LDAP 提供者。不過如果您要從 Active Directory 抓取帳戶,並在本機電腦群組中使用該帳戶,就必須使用 WinNT 提供者。
我們明白:所有針對提供者、ADsPaths 和可否使用它們之類的說明,已經讓您覺得頭昏腦脹。不過請不要為此煩惱了。您只要使用以下的指令碼,就可以對電腦 atl-ws-01 上的本機系統管理員群組,新增一名網域使用者 (位於 fabrikam 網域,名叫 kenmyer 的使用者):
strComputer = "atl-ws-01"
Set objGroup = GetObject("WinNT://" & strComputer & "/Administrators")
Set objUser = GetObject("WinNT://fabrikam/kenmyer")
objGroup.Add(objUser.ADsPath)
請持續寄來卡片和信件! |