day & night

VBScript, Вопросы
Дата обновления: , перейти к новому сообщению
#1
Nicolay_7



Опытный юзверь
**

Группа: Пользователи
Сообщений: 81
Регистрация: 30.05.2006
Пользователь №: 171.560


Респектов: 17
-----X----


Предупреждений:


Решил потестить этот скрипт добавления юзверов в AD из txt файлика.

Почему то не работают аттрибуты службы терминалов ...?
TerminalServicesProfilePath
TerminalServicesHomeDirectory

В чём грабли .... кто ответит

Сообщение об ошибке:
Указанное значение или аттрибут службы каталогов не существует


Set filesys = CreateObject("Scripting.FileSystemObject")
Set InFile = filesys.OpenTextFile("c:\users.txt", 1)
Set objRootDSE = GetObject("LDAP://RootDSE")
strDNSDomain = objRootDSE.Get("defaultNamingContext")
While Not InFile.AtEndOfStream
sInString = InFile.ReadLine
sADName = Split(sInString, ",")(0)
sLogonName = Split(sInString, ",")(1)
sPassword = Split(sInString, ",")(2)
sGroup = Split(sInString, ",")(3)
sOU = Split(sInString, ",")(4)
sOfficeName= Split(sInString, ",")(5)
sDName= Split(sInString, ",")(6)
sLogonScript= Split(sInString, ",")(7)
sScPath= Split(sInString, ",")(8)
sHDrive= Split(sInString, ",")(9)
sTermProf= Split(sInString, ",")(10)
sTermHDir= Split(sInString, ",")(11)
Set objOU = GetObject("LDAP://ou=" & sOU & "," & strDNSDomain)
sOUdn = objOU.Get("distinguishedName")
Set objGroup = GetObject("LDAP://cn=" & sGroup & "," & sOUdn)
Set objUser = objOU.Create("user", "cn=" & sADName)
objUser.Put "SAMAccountName", sLogonName
objUser.Put "userPrincipalName", sLogonName
objUser.SetInfo
objUser.AccountDisabled = false
objUser.Put "physicalDeliveryOfficeName", sOfficeName
objUser.Put "displayName", sDName
objUser.Put "ProfilePath", sScPath
objUser.Put "ScriptPath", sLogonScript
objUser.Put "HomeDirectory", sHDrive
sHDrive objUser.Put "HomeDrive", "Z"
objUser.Put "TerminalServicesProfilePath", sTermProf
objUser.Put "TerminalServicesHomeDirectory", sTermHDir
objUser.SetPassword sPassword
objUser.SetInfo
objGroup.Add objUser.ADSPath
objGroup.SetInfo
Wend
User is offline
Go topGo end
 

Ответов(1 - 3)
2.07.2009 - 13:35
#2
charodey_mag



Опытный юзверь
**

Группа: Пользователи
Сообщений: 147
Регистрация: 15.02.2007
Из: Opera
Пользователь №: 335.462


Респектов: 22
-----X----


Предупреждений:



C этой странички проверял такой код:
Code

Const Enabled = 1
Const Disabled = 0
Set objUser = GetObject _
   ("LDAP://cn=MyerKen,ou=Management,dc=NA,dc=fabrikam,dc=com")

objUser.TerminalServicesProfilePath = ""
objUser.TerminalServicesHomeDirectory = ""
objUser.TerminalServicesHomeDrive = ""
objUser.AllowLogon = Enabled

objUser.SetInfo

Все работает, только изменения проявляются иногда с задержкой несколько секунд...
User is offline
Go topGo end
7.07.2009 - 16:46
#3
Nicolay_7



Опытный юзверь
**

Группа: Пользователи
Сообщений: 81
Регистрация: 30.05.2006
Пользователь №: 171.560


Респектов: 17
-----X----


Предупреждений:


Если вместо этого
objUser.Put "TerminalServicesProfilePath", sTermProf

добавить это
objUser.TerminalServicesProfilePath = sTermProf 'работает

User is offline
Go topGo end
19.07.2009 - 7:46
#4
Nicolay_7



Опытный юзверь
**

Группа: Пользователи
Сообщений: 81
Регистрация: 30.05.2006
Пользователь №: 171.560


Респектов: 17
-----X----


Предупреждений:


Помогите разобратся

Нужно поставить галочку для всех пользователей
>>> Запретить смену пароля пользователем
Как в первом так и втором варианте показывает ошибку
Код защиты данных имеет неверную структуру
Win 2003 R2 Stan SP2 x86

Вариант № 1

Const ADS_ACETYPE_ACCESS_DENIED_OBJECT = &H6
Const ADS_ACEFLAG_OBJECT_TYPE_PRESENT = &H1
Const CHANGE_PASSWORD_GUID = "{ab721a53-1e2f-11d0-9819-00aa0040529b}"
Const ADS_RIGHT_DS_CONTROL_ACCESS = &H100

Set objUser = GetObject _
("LDAP://cn=myerken,ou=management,dc=fabrikam,dc=com")
Set objSD = objUser.Get("ntSecurityDescriptor")
Set objDACL = objSD.DiscretionaryAcl
arrTrustees = array("nt authority\self", "EVERYONE")

For Each strTrustee in arrTrustees
Set objACE = CreateObject("AccessControlEntry")
objACE.Trustee = strTrustee
objACE.AceFlags = 0
objACE.AceType = ADS_ACETYPE_ACCESS_DENIED_OBJECT
objACE.Flags = ADS_ACEFLAG_OBJECT_TYPE_PRESENT
objACE.ObjectType = CHANGE_PASSWORD_GUID
objACE.AccessMask = ADS_RIGHT_DS_CONTROL_ACCESS
objDACL.AddAce objACE
Next

objSD.DiscretionaryAcl = objDACL
objUser.Put "nTSecurityDescriptor", objSD
objUser. SetInfo

Вариант № 2 почти тоже самое

strUserDN = "xxx" ' e.g. cn=rallen,ou=Sales,dc=rallencorp,dc=com

Const ACETYPE_ACCESS_DENIED_OBJECT = 6
Const ACEFLAG_OBJECT_TYPE_PRESENT = 1
Const RIGHT_DS_CONTROL_ACCESS = 256
Const CHANGE_PASSWORD_GUID = "{ab721a53-1e2f-11d0-9819-00aa0040529b}"

set objUser = GetObject("LDAP://" & strUserDN)
set objSD = objUser.Get("ntSecurityDescriptor")
set objDACL = objSD.DiscretionaryAcl

' Add a deny ACE for Everyone
set objACE = CreateObject("AccessControlEntry")
objACE.Trustee = "Everyone"
objACE.AceFlags = 0
objACE.AceType = ACETYPE_ACCESS_DENIED_OBJECT
objACE.Flags = ACEFLAG_OBJECT_TYPE_PRESENT
objACE.ObjectType = CHANGE_PASSWORD_GUID
objACE.AccessMask = RIGHT_DS_CONTROL_ACCESS
objDACL.AddAce objACE

' Add a deny ACE for Self
set objACE = CreateObject("AccessControlEntry")
objACE.Trustee = "Self"
objACE.AceFlags = 0
objACE.AceType = ACETYPE_ACCESS_DENIED_OBJECT
objACE.Flags = ACEFLAG_OBJECT_TYPE_PRESENT
objACE.ObjectType = CHANGE_PASSWORD_GUID
objACE.AccessMask = RIGHT_DS_CONTROL_ACCESS
objDACL.AddAce objACE

objSD.DiscretionaryAcl = objDACL
objUser.Put "nTSecurityDescriptor", objSD
objUser.SetInfo
WScript.Echo "Enabled no password changing for " & strUserDN
User is offline
Go topGo end

Topic Options
Сейчас: 28.04.2024 - 14:46
Мобильная версия | Lite версия