我们正在将用户文件夹迁移到新服务器。它们的形式是\\server\users\UserName\
,所以\\server\users\Tim Smith\
。我们本质上想改变server
为server1
我们有很多用户;因此手动编辑每个用户非常耗时。
关于我可以用来批量编辑所有用户的工具有什么建议吗?
我们正在将用户文件夹迁移到新服务器。它们的形式是\\server\users\UserName\
,所以\\server\users\Tim Smith\
。我们本质上想改变server
为server1
我们有很多用户;因此手动编辑每个用户非常耗时。
关于我可以用来批量编辑所有用户的工具有什么建议吗?
如果您的用户文件夹名称与他们的帐户名称匹配,Active Directory 用户和计算机可以做您想做的事情。
假设所有用户都在同一个 OU 中,只需突出显示所有用户,右键单击并选择“属性”,进入“配置文件”选项卡,然后在表单中输入新路径:
如果它们分布在多个 OU 上,那就有点困难了,但并不多。假设您使用的是 Windows 2003 版本的 Active Directory 用户和计算机:
在 AD 顶部的“已保存查询”节点,执行“新建”/“查询”。
将查询命名为您喜欢的任何名称,并根据需要提供描述。在查询定义中,为“查询根”(或域的根,如果它们位于作为根的子级的 OU 中)的用户帐户上方选择一个 OU。
单击“定义查询”。在“查找常用查询”对话框中,从“用户”选项卡上“名称”标题右侧的下拉列表中选择“有值”。再次单击“确定”和“确定”以定义查询。
突出显示新创建的查询并右键单击并选择“刷新”(或按 F5),如果查询未填充右窗格。
在右窗格中突出显示用户,右键单击并选择“属性”。转到“配置文件”选项卡并如上所述进行更改。
非常简单。
或者,如果您不想使用 GUI,您可以使用批处理文件来管理它并将其作为脚本运行。或者您可以将其键入命令行。
如果您想更改域中的所有用户,我会像这样运行它。
dsmod 认识到 $username$ 标志表示从 dsquery 命令通过管道传送给它的用户的 samid。它还为附加到 dsmod 命令的 -profile 命令识别此标志。
注意:如果您的共享文件夹是隐藏共享,这将不起作用,隐藏共享中的问号会使命令误以为您比实际更早地启动了标志。我为此尝试了一些转义字符,但到目前为止还没有找到任何可以解决此问题的字符。
如果您的所有用户都在特定的 OU 中,您需要更改 dsquery 命令。对于该命令,您需要添加包含您要更改的所有用户的 OU 的完全限定域名。这很有趣,可以通过 dsquery OU 命令找到。
该命令将如下所示,
如果您想批量处理并使用隐藏共享,您可以使用 FOR 循环来执行此操作,但是由于首先提取所有用户所需的循环,然后只提取他们的姓名,然后返回,因此语法有点复杂并将该信息插入 dsmod 命令的特定区域。这很丑陋,但我会这样做。
注意:如果您在批处理文件中使用它,for 循环标记必须以双百分比开头,即;%%A 而不是 %A
这会查询指定 OU 中的所有用户,然后将它们输出到文件中。然后它运行一个 for 循环,从文件中的 FQDN 中提取用户名,并将其插入到 dsmod 命令中以更改其主目录。最后,如果 for 循环成功运行,它会通过删除它创建的文件来清理自己。
我希望这会有所帮助,即使您不使用批处理文件来执行此特定工作,它也可以在将来为您提供帮助。这样的事情的好处是您可以保存它,如果您将来需要更改其他内容,只需进行一些小的更改,您所要做的就是重新运行它以进行您想要的更改。此外,如果您发现有人进行了未经授权的更改,您只需双击即可将其切换回来。
您可以使用 ADModify.NET 批量更改用户属性。
http://www.codeplex.com/admodify
其他基于脚本的答案都很好(脚本是我最好的锤子),但您也可以使用 DNS CNAME 和服务器重命名来完成相同的操作。将 'server' 更改为 'oldserver',CNAME 'server'->'server1'