AD批量修改用户属性值

  • Post author:
  • Post category:其他




批量修改域用户属性值,上一份工作弄过,没有记录文档,于是这次给记录下来



使用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>



查看客户端,成功执行

在这里插入图片描述



版权声明:本文为weixin_38627000原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。