概述
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 張洪君
------------------------------------------------------------