north_crow
Не парься, запускай на серваке.
Если ексель тя раздражает, перегони его содержимое в текстовик с разделителями.
вот те аналог твоего скрипта, тока со чтенияем из файла.
там же всякие штуки в комментах, типа создания ОУ, групп под юзеров, взятия имени файла из параметра командной строки и прочая.
[more]
Код:
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,ou=EDU_users,dc=edu,dc=ntiustu,dc=local")
Set objDomain = GetObject("LDAP://ou=Students,dc=edu,dc=ntiustu,dc=local")
Set objOU = objDomain.Create("organizationalUnit", "ou=Course"+CStr(iCourse))
objOU.SetInfo
End Sub
' Создать новую группу "students2005" в OU="EDU_users"
' Sub CreateGroup
' Set objOU = GetObject("LDAP://ou=EDU_users,dc=edu,dc=ntiustu,dc=local")
' Set objGroup = objOU.Create("group", "cn=students2005")
' objGroup.Put "sAMAccountName", "students2005"
' objGroup.SetInfo
'End Sub
' процедура создания юзера
Sub CreatAD_User(sParam)
' WScript.Echo sParam
AP = Split(sParam, ",", -1, 1)
xC = UBound(AP)
For j=0 To xC
' WScript.Echo AP(j)
Next
WScript.Echo AP(2)
sNames = Split(AP(3), " ", -1, 1)
Set objContainer = GetObject("LDAP://ou=Course"+CStr(AP(6))+",ou=Students,dc=edu,dc=ntiustu,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.ntiustu.local"
objLeaf.SetInfo ' Записываем
objLeaf.SetPassword AP(4) ' ПАРОЛЬ. После того как юзер создан
objLeaf.Put "Title", AP(1) ' Было так "Студент "+AP(5) Теперь тут будет храниться код
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=ntiustu,dc=local")
objGroup.Add(objLeaf.ADsPath)
End Sub
' 0 1 2 3 4 5 6 7
' пример Abashev-DG, Abashev Dmitrij Gennadevich,Абашев Дмитрий Геннадьевич,20040235,224-ИСТ,2,Экономики и менеджмента
' Abashev-DG,11287,Abashev Dmitrij Gennadevich,Абашев Дмитрий Геннадьевич,20040235,224-ИСТ,2,Экономики и менеджмента
'
' ========================================================
' ================== Начало скрипта ===================
Set objArgs = WScript.Arguments
If objArgs.Count = 1 Then sParamFN = objArgs(0) Else sParamFN = "test.ADSI.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
If Left(strName,1) <> "*" Then CreatAD_User(strName) ' WScript.Echo strName
Loop
objFile.Close
End If
WScript.Echo "Well done. "+CStr(i)+" items processed"
Не парься, запускай на серваке.
Если ексель тя раздражает, перегони его содержимое в текстовик с разделителями.
вот те аналог твоего скрипта, тока со чтенияем из файла.
там же всякие штуки в комментах, типа создания ОУ, групп под юзеров, взятия имени файла из параметра командной строки и прочая.
[more]
Код:
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,ou=EDU_users,dc=edu,dc=ntiustu,dc=local")
Set objDomain = GetObject("LDAP://ou=Students,dc=edu,dc=ntiustu,dc=local")
Set objOU = objDomain.Create("organizationalUnit", "ou=Course"+CStr(iCourse))
objOU.SetInfo
End Sub
' Создать новую группу "students2005" в OU="EDU_users"
' Sub CreateGroup
' Set objOU = GetObject("LDAP://ou=EDU_users,dc=edu,dc=ntiustu,dc=local")
' Set objGroup = objOU.Create("group", "cn=students2005")
' objGroup.Put "sAMAccountName", "students2005"
' objGroup.SetInfo
'End Sub
' процедура создания юзера
Sub CreatAD_User(sParam)
' WScript.Echo sParam
AP = Split(sParam, ",", -1, 1)
xC = UBound(AP)
For j=0 To xC
' WScript.Echo AP(j)
Next
WScript.Echo AP(2)
sNames = Split(AP(3), " ", -1, 1)
Set objContainer = GetObject("LDAP://ou=Course"+CStr(AP(6))+",ou=Students,dc=edu,dc=ntiustu,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.ntiustu.local"
objLeaf.SetInfo ' Записываем
objLeaf.SetPassword AP(4) ' ПАРОЛЬ. После того как юзер создан
objLeaf.Put "Title", AP(1) ' Было так "Студент "+AP(5) Теперь тут будет храниться код
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=ntiustu,dc=local")
objGroup.Add(objLeaf.ADsPath)
End Sub
' 0 1 2 3 4 5 6 7
' пример Abashev-DG, Abashev Dmitrij Gennadevich,Абашев Дмитрий Геннадьевич,20040235,224-ИСТ,2,Экономики и менеджмента
' Abashev-DG,11287,Abashev Dmitrij Gennadevich,Абашев Дмитрий Геннадьевич,20040235,224-ИСТ,2,Экономики и менеджмента
'
' ========================================================
' ================== Начало скрипта ===================
Set objArgs = WScript.Arguments
If objArgs.Count = 1 Then sParamFN = objArgs(0) Else sParamFN = "test.ADSI.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
If Left(strName,1) <> "*" Then CreatAD_User(strName) ' WScript.Echo strName
Loop
objFile.Close
End If
WScript.Echo "Well done. "+CStr(i)+" items processed"