Share via


嗨,Scripting Guy!

嗨,Scripting Guy!

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

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

今天的問題:如何變更 Active Directory 中使用者起始磁碟機的位置?


如何變更 Active Directory 中使用者起始磁碟機的位置?

嗨,Scripting Guy!如何變更 Active Directory 中使用者起始磁碟機的位置?

-- DS

DS,您好。不知道您有沒有讀過愛倫坡的驚聳小說《洩密的心》?書中以第一人稱訴說犯下天衣無縫的殺人案。他殺了一個老人,把屍體支解後藏起來,仔細地安排不讓人發現。最後殺人犯還是嚐到了惡果,他相信自己仍然聽見死人的心臟在鋪木地板下怦怦地跳動,終於受不住而認罪:「我招就是!——撬開地板!——這兒,這兒!——他那顆可憎的心在跳呢!」

老實說,DS 您的問題可比程式界的「洩密的心」:讓我們想起曾在 Script Center 發表的第一篇指令碼,說明如何變更 Active Directory 內的使用者設定檔資訊。很湊巧,當時不小心忽略了磁碟機代號要加冒號 (寫成磁碟機 X,而不是磁碟機 X:)。看起來雖然沒啥大不了,只要編輯指令碼,把冒號放回去就得了。不湊巧那時我們沒有權限登入 TechNet 修改這類筆誤,所以等了好幾個月才有機會找人修正,那時似乎所有登入 Script Center 的讀者都提醒我們「我試過那個使用者設定檔指令碼,但是沒有用。」

好啦,「我們招就是!撬開 Script Center!——這兒,這兒!——那可憎的漏打的冒號正在跳呢!」

似乎有點過頭了,但想到發表的指令碼無法執行,又不能修改,還是相當惱人。

所以這次的指令碼一定不能再出漏子了。這個指令碼可以修改起始磁碟機的位置 (homeDirectory 屬性) 以及起始磁碟機的磁碟機代號 (homeDrive)。如果您只想重新對應磁碟機 (把 homeDrive 改成磁碟機 X: 而不是磁碟機 Q: 等其他選擇) 就不需要包括指派值給 homeDirectory 的指令碼:

Set objUser = GetObject("LDAP://cn=Ken Myer,ou=finance,dc=fabrikam,dc=com")
 
objUser.Put "homeDirectory", "\\atl-fs-01\users\kenmyer"
objUser.Put "homeDrive", "X:"
objUser.SetInfo

真是非常簡單,所以之前無法運作讓我們非常煩惱。(如果是 40,000 行指令碼就算了,竟然短短 4 行也會跌股?) 我們先繫結到 Active Directory 中的 Ken Myer 使用者帳號,然後用下面這兩行指令碼替 homeDirectory 屬性指定 UNC 路徑,並替 homeDrive 指定磁碟機代號 (事實上是磁碟機代號加上冒號):

objUser.Put "homeDirectory", "\\atl-fs-01\users\kenmyer"
objUser.Put "homeDrive", "X:"

接著呼叫 SetInfo 方法,來儲存變更並將新的值寫入 Active Directory 內實際的使用者帳號。

現在恐怖的秘密已經為人所知,或許我們應該忘卻破碎的人生,抬頭挺胸繼續活下去。《洩密的心》文中,殺人兇手最後被捕坐牢,您應該不會因為漏個一個冒號,就這樣對待我們吧?

真殘忍啊!


如需詳細資訊

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

 

回到頁首 回到頁首