您好,DS。您读过埃德加·爱伦·坡的小说《泄密的心》吗?这部小说的主人公犯了一项最严重的罪行:他杀害了一位老人,然后肢解并掩藏了尸体,他做得非常谨慎,没人能知道发生了这起谋杀案。但最后,杀人者被自己的内疚搞得精疲力尽。因为他认为自己仍能听到从地板下面传来的死者的心跳声音,他坦白了罪行:“我承认有罪!--快把地板砸烂!--这儿,这儿!--他那可怕的心跳声!”
说实话,DS,您的问题可以说是脚本领域的泄密的心:它使我们回想起关于在“脚本中心”发布的首批脚本中的一个脚本的可怕回忆,那个脚本用来更改 Active Directory 中的用户配置文件信息。不幸的是,在脚本编写过程中,我们在某处驱动器符号的后面丢了一个冒号(使驱动器成了 X 而不是 X:)。这似乎没什么大不了的:毕竟,只要编辑脚本,再加上冒号就行了。但糟糕的是,当时我们无权登录到 TechNet 来纠正此类小问题。因此,在别人可以替我们纠正这个错误前,我们不得不苦等数月,在那段日子里,好象访问“脚本中心”的每个人都会给我们写信并且说,“嘿,我试了那个用户配置文件脚本,但它不起作用。”
好,看吧:“我们承认有罪!--快把脚本中心砸烂!--这儿,这儿!--遗漏的冒号的心跳声!”
好了,这可能有点小题大做了。但想到我们曾发布了一个不起作用的脚本,并且随后无法改正错误,这至今仍折磨着我们。
相比之下,下面的脚本应该会起作用。该脚本更改主驱动器的位置(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 行代码的脚本出了问题,尚可原谅,但如果是只有四行代码的脚本出了问题呢?)我们首先绑定到 Active Directory 中的 Ken Myer 用户帐户,然后使用以下两行代码指定 homeDirectory 属性的 UNC 路径和 homeDrive 的驱动器符号(实际上包括驱动器符号和冒号):
objUser.Put "homeDirectory", "//atl-fs-01/users/kenmyer"
objUser.Put "homeDrive", "X:"
然后我们调用 SetInfo 方法保存更改,并将新值写入 Active Directory 中的实际用户帐户。
到现在,我们的可怕的秘密已暴露无遗,也许我们可以捡拾起动荡生活的碎片,试着继续前行。在《泄密的心》中,主人公因其罪行而被捕入狱;您认为我们不会只因为在脚本中遗漏了一个冒号而受到同样的惩罚,是吧?
哎呀,那可太残酷了。