捐血一袋救人一命

2010年4月21日 星期三

自動建立AD帳號程式

今天為了客戶寫了一支自動建帳號的程式

該程式將讀取 User 提供的帳號密碼清單來建立帳號


' Greate Accounts and Setting Password
' 讀取 List.txt 檔案中的帳號及密碼
' 將帳號建立在 strOU 這個組織單位中
' 並設定密碼
' List.txt 格式,每行一個帳號密碼,帳號與密碼以空格分開
' account password
' 如果使用者密碼有空白字元
' 請自己選用一個分隔符號,然後將第41行程式的空白字串改掉
' arrAccount = split(strAccountPW, " ")
' 設定單位組織
strOU = InputBox ( "請輸入組織單位名稱:" , "Greate Accounts under OU" , "SalesDept" )
' 設定 Domain
strDomain = InputBox ( "請輸入網域名稱:" , "Greate Accounts under OU" , "domain.com.tw" )
' 設定開啟檔案模式
Const ForReading = 1
' 宣告變數
strDC = ""
strLDAP = ""
strUserCN = ""
arrDC = split(strDomain,".")
for nLoop = 0 to UBound(arrDC)
strDC = strDC & "dc=" & arrDC(nLoop) & ","
next
strDC = left(strDC, LEN(strDC) - 1)
' wcscript.echo strDC
Set objOU = GetObject("LDAP://OU=" & strOU & "," & strDC)
' Read Account List File
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objTextFile = objFSO.OpenTextFile ("List.txt", ForReading)
Do Until objTextFile.AtEndOfStream
' 一行一行讀取 List.txt
strAccountPW = objTextFile.ReadLine
' 將 Account and Password 拆開,arrAccount(0)存帳號,arrAccount(1)存密碼
arrAccount = split(strAccountPW, " ")
' wscript.echo arrAccount(0) & ":" & arrAccount(1)
Set objUser = objOU.Create("User", "cn=" & arrAccount(0) )
objUser.Put "sAMAccountName", arrAccount(0)
objUser.Put "c", "TW"
objUser.Put "co", "台灣"
objUser.Put "countryCode", "886"
objUser.Put "mail", arrAccount(0) & "@" & strDomain
objUser.Put "name", arrAccount(0)
' Uncheck User need change password
' 將帳號物件寫入
  objUser.SetInfo
' 設定使用者預設密碼
Set objUser = GetObject ("LDAP://cn=" & arrAccount(0) & ",ou=" & strOU & "," & strDC)
objUser.SetPassword arrAccount(1)
' 使用變更密碼的方式來設定密碼
' objUser.ChangPassword "", arrAccount(1)
' 因為 Windows 2003 的預設密碼政策要求比較嚴格,可以使用下列預設密碼
' objUser.SetPassword "p@ssw0rd"
' 要求使用者下次登入要變更密碼
' objUser.Put "pwdLastSet", 0
' 取消帳號停用
objUser.AccountDisabled = FALSE
' 設定帳號過期日,Default為「永不過期」
' objUser.AccountExpirationDate = "1970/1/1"
objUser.SetInfo
Loop
' 關閉檔案
objTextFile.Close
wscript.echo "帳號建立完成"

0 意見: