Azure DevOps Server:批量创建用户(域账户)
概述
Azure DevOps Server (原名为TFS,现在也简称DevOps Server)作为微软公司的软件研发管理平台产品,在用户认证(单一账户、单点登录)领域,继承了微软其他服务器产品的特征,可以使用Active Directory 活动目录(域服务器)作为自己的账户认证服务器,实现单一账户和单点登录功能。在使用过程中,当我们在域服务器上为用户创建账户后,DevOps Server 就可以为这个账户配置相应的权限,例如团队项目、Git库和流水线等权限。开发人员使用域账户登录DevOps Server,
对于已经开始使用AD域活动目录的企业,新增个别用户时,只需要域服务器上手动新增账户即可;对于全新部署Azure DevOps Server 或者需要批量导入用户的企业,可以参考下面介绍的方法,实现批量创建Azure DevOps Server 用户的目标。
操作方法
1. 首先使用Excel收集信息,将用户信息包括账户、初始密码等保存为csv文件,
- 特别注意,Excel 2019默认将csv文件保存为UTF-8格式的文档,如果文档中包含了中文字符,需要手动使用notepad或者其他工具转换为ANSI格式,否则自动运行脚本会出现错误。
- Excel文档中需要收集哪些信息,取决于域控制器上的属性,如果域服务器上没有预设的字段或者自定义的字段,需要将Excel 中的这些字段映射到服务器存在的账户属性
- 注意需要删除excel中的第一行标题文字;自动创建账户的脚本只识别数据,不需要标题
2. 将csv文件复制到域控服务器,或者安装了域用户管理工具(dsadd.exe)的计算机上
3. 使用管理员账户或具有创建域账户权限的账户运行命令行窗口,并运行下面的命令:
for /f "tokens=1,2,3,4,5,6,7,8 delims=," %a in (C:\Users\devadmin\Downloads\users2.csv) do dsadd user "cn=%a,ou=%e,ou=技术部,dc=tfs,dc=local" -samid %b -upn %b@tfs.local -display %a -pwd %h -mustchpwd no -pwdneverexpires yes -disabled no -email %c -tel %d -dept %e -title %f -office %g -company 科技发展有限公司
运行上面的命令,系统会自动在域服务器对应的组织单元中新建对应的账户。下面我们来具体分析一下上面的脚本:
1. 命令行脚本for的格式为
FOR /F ["options"] %variable IN (file-set) DO command [command-parameters]
2. 命令中的tokens和delims
- tokens:表示在脚本中定义了8个变量,分别对应csv文档中的8列,在后面的使用中,分别使用%a,%b…..来引用
- delims:表示在csv文档中的分隔符,这里使用半角逗号
3. %a in (C:\Users\devadmin\Downloads\users2.csv)
变量来源的数据文档
4. do dsadd user
dsadd.exe是一个内置于Windows Server中的命令行工具。如果您安装了活动目录域服务(AD DS)服务器角色,则可以使用它来创建账户。要使用dsadd,必须在提升的命令提示符下运行dsadd命令。要打开提升的命令提示,请单击“开始”,右键单击“命令提示”,然后单击“以管理员身份运行”。
5. "cn=%a,ou=%e,ou=技术部,dc=tfs,dc=local"
这是账户在AD域服务器中的目录位置,也是账户的唯一信息
6. –samid –display等属性
这是域账户的属性,可以与csv文档中的字段对应
账户创建成功后,我们就可以在Azure DevOps Server 中使用“邀请”按钮添加用户了
补充信息
下面补充一下dsadd.exe user的详细参数说明,你也可以使用dsadd.exe user /?的方式获取帮助说明:
dsadd命令的可使用参数释议:
参数
UserDN
必需。指定要添加的用户的可分辨名称。如果省略可分辨名称,则将从标准输入 (stdin) 中获取该名称。
-samid SAMName
指定 SAM 名称作为该用户的唯一 SAM 帐户名(例如,Linda)。如果未指定,dsadd 将尝试使用 UserDN 的公用名 (CN) 值的至多前 20 个字符创建 SAM 帐户名。
-upn UPN
指定要添加的用户的用户主体名称(例如,Linda@SZHIT.CLOUD.COM)。
-fn FirstName
指定要添加的用户的名字。
-mi Initial
指定要添加的用户的中间名首字母。
-ln LastName
指定要添加的用户的姓氏。
-display DisplayName
指定要添加的用户的显示名。
-empid EmployeeID
指定要添加的用户的雇员 ID。
-pwd {Password | *}
指定将用户密码设置为 Password 或 *。如果设置为 *,将提示您输入用户密码。
-desc Description
指定要添加的用户的描述。
-memberof GroupDN ...
指定希望用户加入的组的可分辨名称。
-office Office
指定要添加的用户的办公室位置。
-tel PhoneNumber
指定要添加的用户的电话号码。
-email Email
指定要添加的用户的电子邮件地址。
-hometel HomePhoneNumber
指定要添加的用户的家庭电话号码。
-pager PagerNumber
指定要添加的用户的寻呼机号码。
-mobile CellPhoneNumber
指定要添加的用户的移动电话号码。
-fax FaxNumber
指定要添加的用户的传真号码。
-iptel IPPhoneNumber
指定要添加的用户的 IP 电话号码。
-webpg WebPage
指定要添加的用户的 Web 页的 URL。
-title Title
指定要添加的用户的称谓。
-dept Department
指定要添加的用户的部门。
-company Company
指定要添加的用户的公司信息。
-mgr ManagerDN
指定要添加的用户的管理器的可分辨名称。
-hmdir HomeDirectory
指定要添加的用户的主目录位置。如果 HomeDirectory 是作为通用命名约定 (UNC) 路径给出,则必须使用 -hmdrv 参数指定要映射到此路径的驱动器号。
-hmdrv DriveLetter:
指定要添加的用户的主目录驱动器号(例如,E:)。
-profile ProfilePath
指定要添加的用户的配置文件路径。
-loscr ScriptPath
指定要添加的用户的登录脚本路径。
-mustchpwd {yes | no}
指定用户是否必须在下次登录时更改其密码(yes 必须更改,no 不必更改)。默认情况下,用户不必更改密码 (no)。
-canchpwd {yes | no}
指定用户是否可以更改其密码(yes 可以更改,no 根本不能更改)。默认情况下,允许用户更改密码 (yes)。如果 -mustchpwd 参数的值为 yes,则该参数的值必须为 yes。
-reversiblepwd {yes | no}
指定是否应使用可逆加密来存储用户密码(yes 表示应该,no 表示不应该)。默认情况下,用户不能使用可逆加密 (no)。
-pwdneverexpires {yes | no}
指定用户密码是否永不过期(yes 表示是,no 表示不是)。默认情况下,用户密码会过期 (no)。
-acctexpires NumberOfDays
指定从今天算起用户帐户将到期的天数。0 值表示将今天的结束时间设置为到期时间。正值表示将将来的时间设置为到期时间。负值表示将以前的时间设置为到期时间。值 never 将帐户设置为永不过期。例如,0 值表示该帐户在今天结束时过期。值 -5 表示该帐户 5 天前就已经到期,并将以前的时间设置为到期日期。值 5 表示该帐户将在 5 天后到期。
-disabled {yes | no}
指定是否禁用用户帐户登录(yes 禁用登录,no 允许登录)。默认情况下,启用用户帐户登录 (no)。
{-s Server | -d Domain}
连接到指定的远程服务器或域。默认情况下,计算机与登录域中的域控制器相连接。
-u UserName
指定用户要用于登录到远程服务器的用户名。默认情况下,-u 使用用户登录时的用户名。您可以使用下列任一格式指定用户名:
用户名(例如 Linda)
域\用户名(例如 SZHIT\Linda)
用户主体名称 (UPN)(例如 Linda@SZHIT.CLOUD.COM)
-p {Password | *}
指定使用密码或 * 登录到远程服务器。如果键入 *,将提示您输入密码。
-q
将所有输出降低为标准输出(安静模式)。
------------------------------------------------------------
http://www.cnblogs.com/danzhang/ DevOps MVP 张洪君
------------------------------------------------------------