Share via


嗨,Scripting Guy!

Hey,Scripting Guy!

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

今天的問題:我要如何對本機系統管理員群組新增網域使用者?


我要如何對本機系統管理員群組新增網域使用者?

嗨,Scripting Guy!我要如何對電腦上的本機系統管理員群組新增網域使用者?

-- MB

MB,您好。我們開闢這個專欄的原因之一,就是想要深入瞭解系統管理員定期執行的工作 (及指令碼)。事實上,坐在 Microsoft 園區奢華頂樓套房中的我們,並非總是很瞭解真實世界中的工作方式。例如,在指令碼中心我們備有一個範例指令碼,可以向您顯示如何對本機系統管理員帳戶新增使用者:
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)

請持續寄來卡片和信件!


如需詳細資訊

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

 

回到頁首 回到頁首