Тема: VBScript: Формирование списка пользователей из ADirectory в Excel
Задача: Необходимо создать список пользователей из AD в таблицу Excel, при этом у некоторых пользователей не указаны дополнительные телефоны.
Вопрос: Проблема состоит в том, что у пользователей с неуказанными дополнительными телефонами поле OtherTelephone = не установлено, соответственно условие (otherTelephone=*) для них не выполняется.
Каким образом можно построить запрос, чтобы в него попадали и пользователи с дополнительными телефонами, и с пустыми значениями ?
Сам скрипт:
strDomainDN = "DC=test,DC=LOCAL"
strBase = "<LDAP://" & strDomainDN & ">;"
'По кодам UseraccountControl Смотреть. http://support.microsoft.com/kb/305144
strFilter = "(&(objectClass=person)(objectClass=user)(otherTelephone=*)(|(useraccountControl=66048)(useraccountcontrol=512))(!(objectClass=computer)));"
strAttrs = "Name,mail,telephoneNumber,otherTelephone;" 'Фильтр
strScope = "subtree"
Set objExcel = WScript.CreateObject("Excel.Application")
objExcel.Visible = True
objExcel.Workbooks.Add
objExcel.ActiveSheet.Name = "UserName " & Left(strDomainDN,19) & "..."
objExcel.ActiveSheet.Range("A1").Activate
objExcel.ActiveCell.Value = "Имя пользователя" 'колонка № 1
objExcel.ActiveCell.Offset(0,1).Value = "Электронная почта " 'колонка 2
objExcel.ActiveCell.Offset(0,2).Value = "Телефон " 'колонка 3
objExcel.ActiveCell.Offset(0,3).Value = "Моб. Номер " 'колонка 4
objExcel.ActiveCell.Offset(1,0).Activate 'переход на следующую строку.
Set objConn = CreateObject("ADODB.Connection")
objConn.Provider = "ADsDSOObject"
objConn.Open "Active Directory Provider"
Set objRS = objConn.Execute(strBase & strFilter & strAttrs & strScope)
objRS.MoveFirst
i = objRS.Fields.Count
WScript.Echo i
while Not objRS.EOF
For Each Field in objRS.fields("otherTelephone").value 'Перебераем OtherTelephone, а вдруг там есть еще какие-либо телеофны помимо одного мобильника
OtherTelephone = OtherTelephone + Field + " "
WScript.Echo otherTelephone
Next
objExcel.ActiveCell.Value = objRS.Fields(0).Value
objExcel.ActiveCell.Offset(0,1).Value = objRS.Fields(1).Value
objExcel.ActiveCell.Offset(0,2).Value = objRS.Fields(2).Value
objExcel.ActiveCell.Offset(0,3).Value = objRS.Fields(3).Value
objExcel.ActiveCell.Offset(0,3).Value = OtherTelephone
objExcel.ActiveCell.Offset(1,0).Activate
objRS.MoveNext
OtherTelephone = Empty
Wend