Share via


嗨,Scripting Guy!

Hey,Scripting Guy!

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

今天的問題:如何重新命名 Active Directory 群組?


如何重新命名 Active Directory 群組?

嗨,Scripting Guy!如何重新命名 Active Directory 群組?

-- CL

CL,您好。這其實很簡單;您將可看到,它只需要兩行程式碼而已。它不算是困難的問題,不過裡面有一點小小的竅門。因為 ADSI 沒有 Rename 方法 (至少在處理 Active Directory 的時候沒有)。所以,您必須使用 MoveHere 方法將帳戶從它目前的 ADsPath「移到」新的 ADsPath。比較麻煩的是,新路徑只有一個地方不一樣:CN (一般名稱)。給物件一個新的 CN 可以有效地重新命名它。

感到困惑嗎?這不能怪您。讓我舉個例子,假設我們有個群組,具有類似下面的 ADsPath (請記住,ADsPath 是可以讓我們在 Active Directory 中找到物件的唯一路徑):

LDAP://cn=FinAdmins, ou=Finance, dc=fabrikam, dc=com

請注意,這個群組的 CN 是 FinAdmins。假如我們「希望」這個群組的 CN 變成 Finance Managers;換句話說,我們希望物件的 ADsPath 變成下面這樣:

LDAP://cn=Finance Managers, ou=Finance, dc=fabrikam, dc=com

我知道您在想什麼,但是 Active Directory 不允許我們直接變更 CN 屬性的值;也就是說,我們不能用下面這樣的程式碼來變更 CN:

objGroup.CN = "Finance Managers"
objGroup.SetInfo

不過這並不要緊;我們只要「移動」群組就可以了。群組一開始是這個 ADsPath:

LDAP://cn=FinAdmins, ou=Finance, dc=fabrikam, dc=com

現在我們要把它移到下面這個 ADsPath:

LDAP://cn=Finance Managers, ou=Finance, dc=fabrikam, dc=com

這個群組仍然是在 Finance OU (財務組織單位) 中,也仍然擁有現有的所有屬性和成員;它還是同一個群組,只不過有了新的 ADsPath 和新的 CN。不錯,是有點怪怪的,不過它確實有效。其實它和使用 Move 命令重新命名檔案沒什麼不同。如果您從命令提示字元輸入下面的命令,它會將檔案 C:\Logs\New.log 重新命名為 C:\Logs\Old.log:

move c:\logs\new.log c:\logs\old.log

道理是一樣的。

那麼要怎樣才能讓程式碼實際上看起來像是重新命名群組的樣子?應該會很像這個樣子:

Set objDomain = GetObject("LDAP://ou=finance, dc=fabrikam, dc=com")
objDomain.MoveHere _
     "LDAP://cn=FinAdmins,ou=Finance,dc=fabrikam,dc=com", "cn=Finance Managers"

就像剛才所說的,相當簡單。我們繫結到 Finance OU (也就是群組帳戶所在的容器),然後呼叫 MoveHere 方法。我們必須傳遞兩個參數給 MoveHere:要重新命名的物件的 ADsPath (LDAP://cn=FinAdmins,ou=Finance,dc=fabrikam,dc=com) 和物件的新 CN (cn=Finance Managers)。就是這麼簡單。執行這個指令碼之後,群組便會重新命名。


如需詳細資訊

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

 

回到頁首 回到頁首