批量修改域用户属性值,上一份工作弄过,没有记录文档,于是这次给记录下来
使用dsquery 和dsmod 命令结合使用
dsquery user 用于查询用户相关属性信息
dsmod user 修改用户属性
dsmod 修改用户属性 官方命令
Dsmod: Active Directory | Microsoft Docs https://docs.microsoft.com/zh-cn/previous-versions/orphan-topics/ws.10/cc755470(v=ws.10)?redirectedfrom=MSDN
-name 查找其名称与筛选器的给定
(如 “jon*”、“
ith” 或 “j
th”)
dsquery 查询用户属性
Dsquery user | Microsoft Docs https://docs.microsoft.com/en-us/previous-versions/windows/it-pro/windows-server-2008-R2-and-2008/cc725702(v=ws.10)?redirectedfrom=MSDN
-name 查找其名称与筛选器的给定
(如 “jon*”、“
ith” 或 “j
th”)
实操
批量导出域用户 name 信息
dsquery user “OU=hmtech,DC=hmtech,DC=com”
Dsquery 已达到要显示的 100 个结果的默认界限;使用 -limit 选项显示更多的结果。
dsquery user “OU=hmtech,DC=hmtech,DC=com” -name -limit 350 >c:\name.txt
导出到name.txt里
dsquery user “OU=hmtech,DC=hmtech,DC=com” -name * -limit 450
查看当前用户信息
导出后,修改信息到excel中
csv格式如下
1.查询用户 one
C:\Windows\system32>dsquery user -name one
“CN=one,OU=Ops_Dept,OU=IT_Dept,OU=hmtech,DC=hmtech,DC=com”
查询用户并修改其邮箱为 one@huamengtech.net
C:\Windows\system32>dsquery user -name one | dsmod user -email one@huamengtech.net
dsmod 成功:CN=one,OU=Ops_Dept,OU=IT_Dept,OU=hmtech,DC=hmtech,DC=com
修改 特殊字符用户 比如带空格的、带汉字的用户
1.现在用户 属性编辑器 ,找到 name值 查看
Wind 罗峰
2.查询用户,需要在值上附上双引号,避免识别无效
C:\Windows\system32>dsquery user -name “Wind 罗峰”
“CN=Wind 罗峰,OU=Ops_Dept,OU=IT_Dept,OU=hmtech,DC=hmtech,DC=com”
C:\Windows\system32>dsquery user -name “Wind 罗峰” | dsmod user -email wind.luo@huamengtech.net
dsmod 成功:CN=Wind 罗峰,OU=Ops_Dept,OU=IT_Dept,OU=hmtech,DC=hmtech,DC=com
批量修改域用户邮箱,这时候需要借用csv文件列表了。
得出这样一条命令后我们既然要批量修改那么就要想办法通过调用CSV文件来循环的跑这一行命令。
for /f "skip=1 eol=;tokens=1-2 delims=," %a in (c:\mail.csv) do dsquery user -name %a | dsmod user -email %b
for /f “skip=1 eol=;tokens=1-2 delims=,” %a in (c:\mail.csv) do dsquery user -name %a | dsmod user -email %b
skip=1 去掉CSV中的第一行
tokens=1-2取值CSV中的第一至第二例
%a in (c:\mail.csv) 调用在C盘根目录的mail.csv文件
dsquery user -name %a 中的%a为取值CSV中的A列
dsmod user -email %b 中的%b为取值CSV中的B列
那这样我们就可以知道CSV应该怎样制作了。
用户名 email
aaa aaa@huamengtech.net
bbb bbb@huamengtech.net
第一次导入失败,提示无法识别对象。
C:\Windows\system32>for /f “skip=1 eol=;tokens=1-2 delims=,” %a in (c:\yunwei.csv) do dsquery user -name %a | dsmod user -email %b
C:\Windows\system32>dsquery user -name Wind 罗X | dsmod user -email wind.luo@huamengtech.net
dsquery 失败:“startnode”值的格式错误。
键入 dsquery /? 以获取帮助。dsmod 失败:“此命令的目标对象”丢失。
键入 dsmod /? 以获取帮助。
问题推测,既然是 dsmod 失败:“此命令的目标对象”丢失 说明找不到域用户呗,于是在用户栏加了双引号
C:\Windows\system32>for /f “skip=1 eol=;tokens=1-2 delims=,” %a in (c:\name.csv) do dsquery user -name %a | dsmod user -email %b
C:\Windows\system32>dsquery user -name “”“Wind 罗峰”“” | dsmod user -email wind.luo@huamengtech.net
dsmod 成功:CN=Wind 罗峰,OU=Ops_Dept,OU=IT_Dept,OU=hmtech,DC=hmtech,DC=com
C:\Windows\system32>
查看客户端,成功执行