这里我按用户名来批量修改域用户的邮件来做演示。
使用的是dsquery 和dsmod 命令结合使用
使用dsquery user 查询用户。
-name <Name> 查找其名称与筛选器的给定 <Name>
(如 "jon*"、"*ith" 或 "j*th")
匹配的用户。
dsquery user -name XXX 红色标记为用户名。
使用dsmod user -xxx修改用户属性。 红色标记为参数
以下是dsmod user的参数
-upn <UPN> 设置 UPN 值为 <UPN>。
-fn <FirstName> 设置用户的名为 <FirstName>。
-mi <Initial> 设置用户的中间名首字母为 <Initial>。
-ln <LastName> 设置用户的姓为 <LastName>。
-display <DisplayName> 设置用户显示名为 <DisplayName>。
-fnp <FirstNamePhonetic>
设置用户拼音名为 <FirstNamePhonetic>。
-lnp <LastNamePhonetic> 设置用户拼音姓为 <LastNamePhonetic>。
-displayp <DisplayNamePhonetic>
设置用户拼音显示名 <DisplayNamePhonetic>。
-empid <EmployeeID> 设置用户雇员 ID 为 <EmployeeID>。
-pwd {<Password> | *} 将用户密码重置为 <Password>。如果是 *,则会提示
您输入密码。
-desc <Description> 设置用户的描述为 <Description>。
-office <Office> 设置用户的办公室位置为 <Office>。
-tel <Phone#> 设置用户的电话号码为 <Phone#>。
-email <Email> 设置用户的电子邮件地址为 <Email>。
-hometel <HomePhone#> 设置用户的住宅电话号码为 <HomePhone#>。
-pager <Pager#> 设置用户的寻呼机号码为 <Pager#>。
-mobile <CellPhone#> 设置用户的便携式电话号码为 <CellPhone#>。
-fax <Fax#> 设置用户的传真号码为 <Fax#>。
-iptel <IPPhone#> 设置用户的 IP 电话号码为 <IPPhone#>。
-webpg <WebPage> 设置用户网页 URL 为 <WebPage>。
-title <Title> 设置用户的职务为 <Title>。
-dept <Department> 设置用户的部门为 <Department>。
-company <Company> 设置用户的公司信息为 <Company>。
-mgr <Manager> 设置用户的经理为 <Manager>。
-hmdir <HomeDir> 设置用户的主目录为 <HomeDir>。如果为 UNC 路径,则
必须通过 -hmdrv 指定将被映射到这个路径的驱动器号。
-hmdrv <DriveLtr>: 设置用户主驱动器号为 <DriveLtr>:
-profile <ProfilePath> 设置用户配置文件路径为 <ProfilePath>。
-loscr <ScriptPath> 设置用户登录脚本路径为 <ScriptPath>。
-mustchpwd {yes | no} 设置用户在下次登录时是(yes)否(no)必须更改密码。
-canchpwd {yes | no} 设置用户是(yes)否(no)能更改密码。如果 -mustchpwd
的设置是 "yes",则此设置也应该是 "yes"。
-reversiblepwd {yes | no}
设置是(yes)否(no)使用可逆加密方式存储用户密码。
-pwdneverexpires {yes | no}
设置用户密码是(yes)否(no)永不过期。
-acctexpires <NumDays> 设置用户帐户从今天起 <NumDays> 天后过期。值为 0 表
示帐户在今天结束时过期。正值设置在未来过期。负值设
置在过去过期。字符串值 "never" 表示此帐户永不过期。
-disabled {yes | no} 设置是(yes)否(no)禁用用户帐户。
{-s <Server> | -d <Domain>}
-s <Server> 连接到带有名称 <Server> 的
AD DC/LDS 实例。
-d <Domain> 在域 <Domain> 中连接到 AD DC。
默认: 该登录域中的一个 AD DC。
-u <UserName> 用 <UserName> 连接。默认: 已登录的用户。
用户名可以是: 用户名、域\用户名或用户主体名称(UPN)。
-p <Password> 用户 <UserName> 的密码。如果是 *,则提示您输入密码。
-c 连续操作模式: 如果指定了多个目标对象,则会在报告错误
后继续处理参数列表的下一个对象。如果没有此选项,
则命令将在出现第一个错误时退出。
-q 安静模式: 将所有输出抑制为标准输出。
{-uc | -uco | -uci} -uc 指定从管道的输入或到管道的输出采用 Unicode 格式。
-uco 指定到管道或文件的输出采用 Unicode 格式。
-uci 指定从管道或文件的输入采用 Unicode 格式。
我这里修改用户的mail那么我们就用(-email)中参数来修改。
那么命令就是dsmod user -email [email protected] 。([email protected] )为用户名对应的邮箱
这样我们就可以得出这样一行命令:
dsquery user -name XXX | dsmod user -email [email protected] (查询用户xxx并修改用户xxx的email的属性为[email protected])
得出这样一条命令后我们既然要批量修改那么就要想办法通过调用CSV文件来循环的跑这一行命令。
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应该怎样制作了。
CSV格式:
用户名 | |
xxx | [email protected] |
xxx | [email protected] |
写的这样清楚,我想大家应用会延伸的去想如何修改其他属性了。
当然咯。根据这条批处理一次修改多条属性也可以哦,至于怎样去操作,我想我就不用说了哇。
以下是运行命令的截图
以下是命令运行成功截图:
文章到这,完毕,谢谢大家支持。