1 (изменено: Rialto, 2011-05-17 12:39:45)

Тема: VBS: Длина атрибута в AD

Добрый день, есть скрипт, которых заполняет атрибуты пользователей в AD из экселя, например department
Это поле, согласно схеме имеет длину макс 128 символов и руками я изменял его до 128 символов.
Когда эту же операцию выполняет vbscript то, есть поле больше 64 символа, пишет ошибку (если меньше то всё ок) :
Error: А constant violation occurred
Code: 8007202F

Подскажите, как это исправить ?

Код такой:

strReadExcel = "to_AD.xlsx"

Dim strdepartment

Set fso = CreateObject("Scripting.FileSystemObject")

set WshShell = WScript.CreateObject("WScript.Shell")
Set objExcel = CreateObject("Excel.Application")
Set objSheet = objExcel.Workbooks.Open(fso.BuildPath(fso.GetParentFolderName(WScript.ScriptFullName), strReadExcel))

Set objSysInfo = CreateObject("ADSystemInfo")

  Const ADS_NAME_INITTYPE_GC = 3
  Const ADS_NAME_TYPE_NT4 = 3
  Const ADS_NAME_TYPE_1779 = 1
intRow = 1

Do Until (objExcel.Cells(intRow,1).Value) = "" and (objExcel.Cells(intRow,2).Value) = "" and (objExcel.Cells(intRow,3).Value) = "" and (objExcel.Cells(intRow,4).Value) = ""

   strSAMName = Trim(objExcel.Cells(intRow, 1).Value)
   strdepartment = Trim(objExcel.Cells(intRow, 2).Value)

strName = "MEGAFON\"& strSAMName

Set objTrans = CreateObject("NameTranslate")
  objTrans.Init ADS_NAME_INITTYPE_GC, ""
  objTrans.Set ADS_NAME_TYPE_NT4, strName
  strUserDN = objTrans.Get(ADS_NAME_TYPE_1779)
  strUserDN = Replace(strUserDN, "/", "\/")
Set objUser = GetObject("LDAP://" & strUserDN)

objUser.Put "department", strdepartment

objUser.SetInfo
intRow = intRow + 1
Loop

objExcel.Quit
WScript.Echo "Готово"
wscript.quit 0

2

Re: VBS: Длина атрибута в AD

Откуда информация про 128 символов? В MSDN упоминается 64: Department Attribute

Range-Lower 1
Range-Upper 64

3 (изменено: Rialto, 2011-05-17 13:02:02)

Re: VBS: Длина атрибута в AD

Информация взята из нашего AD, где это значение Range-Upper  = 128
К тому же, по-умолчанию в Windows Server 2008 R2, это значение Range-Upper  = 128

И я писал выше, что руками могу я завести department любой длины до 128 символов.

4 (изменено: BeS Yara, 2011-05-17 13:05:51)

Re: VBS: Длина атрибута в AD

А скрипт тоже запускается на "Windows Server 2008 R2"? Может быть на клиентской ОС библиотека об увеличенном размере под департамент не знает...
Т.к. доступа к Windows Server 2008 R2 нет, могу только мозговым штурмом помочь, проверить не на чем
P.S. у меня под рукой только 2003R2 - там больше 64-х не вводится

5

Re: VBS: Длина атрибута в AD

Rialto, если в 2008 R2 этот атрибут многострочный, то для изменения его значения используйте метод PutEx.

6

Re: VBS: Длина атрибута в AD

А сорри всем, перепутал, это title было Range-Upper  = 128, а у department было Range-Upper  = 64.
Изменил Схему, теперь всё ок.