Option Explicit ' based on http://www.microsoft.com/technet/scriptcenter/guide/sas_ads_scsw.mspx Const ForReading = 1, ForWriting = 2, ForAppending = 8 Const ADS_UF_DONT_EXPIRE_PASSWD = &H10000 Dim objRootDSE, objDomain, objContainer, objOU, objGroup, objLeaf Dim i, j, xC, objArgs, objFSO, objFile, sParamFN Dim strName, Flag, newFlag Dim AP, sNames Sub CreateCourseOU(iCourse) ' Создать новый OU Set objDomain = GetObject("LDAP://ou=Students,dc=edu,dc=nt,dc=local") Set objOU = objDomain.Create("organizationalUnit", "ou=Course"+CStr(iCourse)) objOU.SetInfo End Sub ' процедура создания юзера ' передаваемый параметр - строка с разделителями ' 0 1 2 3 4 5 6 7 ' Abashev-DG,11287,Abashev Dmitrij Gennadevich,Абашев Дмитрий Геннадьевич,20040235,224-ЭУ,2,Экономики и менеджмента ' Sub CreatAD_User(sParam) AP = Split(sParam, ",", -1, 1) ' WScript.Echo AP(2) sNames = Split(AP(3), " ", -1, 1) Set objContainer = GetObject("LDAP://ou=Course"+CStr(AP(6))+",ou=Students,dc=edu,dc=nt,dc=local") Set objLeaf = objContainer.Create("User", "cn=" & AP(2) ) objLeaf.Put "sAMAccountName", AP(0) objLeaf.Put "description", "Студент 2006 " & AP(5) objLeaf.FullName = AP(3) objLeaf.FirstName = sNames(0) objLeaf.LastName = sNames(1)&" "& sNames(2) objLeaf.userPrincipalName = AP(0)& "@" & "edu.nt.local" objLeaf.SetInfo ' Записываем objLeaf.SetPassword AP(4) ' ПАРОЛЬ. После того как юзер создан objLeaf.Put "Title", AP(1) ' Теперь тут будет храниться код objLeaf.Put "Division", AP(5) objLeaf.Put "Department", "Факультет "& AP(7) Flag = objLeaf.Get("UserAccountControl") newFlag = Flag or ADS_UF_DONT_EXPIRE_PASSWD objLeaf.Put "userAccountControl", newFlag objLeaf.AccountDisabled = False objLeaf.SetInfo Set objGroup = GetObject("LDAP://cn=Students,ou=Students,dc=edu,dc=nt,dc=local") objGroup.Add(objLeaf.ADsPath) End Sub ' ======================================================== ' ================== Начало скрипта =================== Set objArgs = WScript.Arguments If objArgs.Count = 1 Then sParamFN = objArgs(0) Else sParamFN = ".ADSI 2006 10 12.txt" For i=1 To 6 CreateCourseOU(i) Next WScript.Echo "Загружается файл" Set objFSO = CreateObject("Scripting.FileSystemObject") If (objFSO.FileExists(sParamFN)) Then Set objFile = objFSO.OpenTextFile (sParamFN, ForReading) i = 0 Do Until objFile.AtEndOfStream i = i + 1 strName = objFile.ReadLine ' WScript.Echo strName CreatAD_User(strName) Loop objFile.Close End If WScript.Echo "Well done. "+CStr(i)+" items processed" |