批处理批量修改AD所有用户的所有属性

时间:2024-03-19 13:41:28

这里我按用户名来批量修改域用户的邮件来做演示。

使用的是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格式:

用户名 email
xxx [email protected]
xxx [email protected]

写的这样清楚,我想大家应用会延伸的去想如何修改其他属性了。

当然咯。根据这条批处理一次修改多条属性也可以哦,至于怎样去操作,我想我就不用说了哇。

以下是运行命令的截图

批处理批量修改AD所有用户的所有属性

以下是命令运行成功截图:

批处理批量修改AD所有用户的所有属性


 

文章到这,完毕,谢谢大家支持。