Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » VBS/WSH/JS - выгрузка из AD информации пользователя

Ответить
Настройки темы
VBS/WSH/JS - выгрузка из AD информации пользователя

Новый участник


Сообщения: 3
Благодарности: 0


Конфигурация

Профиль | Отправить PM | Цитировать


В интернете нашел скрипты, но есть необходимость выгрузки в файл инфо о пользователе, а именно
user (имя пользователя)
e-mail (почтовый адрес)
groups (в каких группах состоит пользователь)

Подскажите на примере скрипта можно вставить функцию вывода инфо о группах (member of)
нагугленный скрипт:

--------------------------
'*****************************************************************
'* Имя: Users_Computers_List.vbs *
'* Язык: VBScript *
'* Назначение: Формирование списка учётных записей пользователей *
'* и компьютеров домена с указанием даты их создания *
'*****************************************************************
Const strResFile = "C:\Users_Computers.txt"
Set objRoot = GetObject("LDAP://RootDSE")
strDomName = objRoot.Get("DefaultNamingContext")
Set objRoot = Nothing
strAttributes = "cn,whenCreated"
arrCmdText = Array("<LDAP://" & strDomName & ">;(&(objectCategory=Person)(objectClass=User));" & strAttributes & ";Subtree", _
"<LDAP://" & strDomName & ">;(objectCategory=Computer);" & strAttributes & ";Subtree")
arrCapLines = Array("|Пользователь|Дата создания|", "|Компьютер|Дата создания|")
Set objConnection = CreateObject("ADODB.Connection")
objConnection.Provider = "ADsDSOObject"
objConnection.Open "Active Directory Provider"
Set objCommand = CreateObject("ADODB.Command")
Set objCommand.ActiveConnection = objConnection
objCommand.Properties("Page Size") = 1000
objCommand.Properties("Timeout") = 30
objCommand.Properties("Sort On") = "cn"
Set objFS = CreateObject("Scripting.FileSystemObject")
Set objFile = objFS.CreateTextFile(strResFile, True)
For i = LBound(arrCmdText) To UBound(arrCmdText)
objCommand.CommandText = arrCmdText(i)
Set objRSet = objCommand.Execute
If objRSet.RecordCount > 0 Then
objFile.WriteLine(arrCapLines(i))
objRSet.MoveFirst
Do Until objRSet.EOF
objFile.WriteLine("|" & objRSet.Fields(0).Value & "|" & DateValue(objRSet.Fields(1).Value) & "|")
objRSet.MoveNext
Loop
End If
If i < UBound(arrCmdText) Then objFile.WriteLine(vbCrLf)
Next
objFile.Close
Set objFile = Nothing
Set objFS = Nothing
Set objRSet = Nothing
Set objCommand = Nothing
Set objConnection = Nothing
WScript.Echo "Готово."

-----------------------------------

Отправлено: 17:21, 13-02-2013

 

Старожил


Сообщения: 210
Благодарности: 76

Профиль | Отправить PM | Цитировать


Например, так:
читать дальше »

Код: Выделить весь код
Dim objRoot, objConnection, objCommand, objRSet, objUser
Dim objFS, objFile, objWShell, strLog, strItem, strList, strTemp, arrTemp
Dim strAttributes, strAttributesAdd
strLog = "Users_Computers.txt"
Set objRoot = GetObject("LDAP://RootDSE")
strDomain = objRoot.Get("DefaultNamingContext")
Set objRoot = Nothing
strAttributes = "cn,whenCreated"
strAttributesAdd = ",mail,distinguishedName"
arrCmdText = Array("<LDAP://" & strDomain & ">;(&(objectCategory=Person)(objectClass=User));" & _
                    strAttributes & strAttributesAdd & ";Subtree", _
                    "<LDAP://" & strDomain & ">;(objectCategory=Computer);" & strAttributes & ";Subtree")
arrCapLines = Array("|Пользователь|Дата создания|Адрес эл. почты|Членство в группах", "|Компьютер|Дата создания|")
Set objConnection = CreateObject("ADODB.Connection")
objConnection.Provider = "ADsDSOObject"
objConnection.Open "Active Directory Provider"
Set objCommand = CreateObject("ADODB.Command")
Set objCommand.ActiveConnection = objConnection
objCommand.Properties("Page Size") = 1000
objCommand.Properties("Timeout") = 30
objCommand.Properties("Sort On") = "cn"
Set objFS = CreateObject("Scripting.FileSystemObject")
strLog = objFS.BuildPath(objFS.GetParentFolderName(WScript.ScriptFullName), strLog)
Set objFile = objFS.CreateTextFile(strLog, True)
On Error Resume Next
For i = 0 To UBound(arrCmdText)
    objCommand.CommandText = arrCmdText(i)
    Set objRSet = objCommand.Execute
    If Err.Number = 0 Then
        If objRSet.RecordCount > 0 Then
            objFile.WriteLine (arrCapLines(i))
            objRSet.MoveFirst
            Do Until objRSet.EOF
                strItem = "|" & objRSet.Fields("cn").Value & "|" & DateValue(objRSet.Fields("whenCreated").Value) & "|"
                If InStr(1, arrCmdText(i), "objectClass=User", vbTextCompare) > 0 Then
                    strTemp = objRSet.Fields("mail").Value
                    If Err.Number = 0 Then
                        strItem = strItem & strTemp & "|"
                    Else
                        Err.Clear
                    End If
                    Set objUser = GetObject("LDAP://" & objRSet.Fields("distinguishedName").Value)
                    If Err.Number = 0 Then
                        strList = vbNullString
                        arrTemp = objUser.GetEx("memberOf")
                        If Err.Number = 0 Then
                            For Each strTemp In arrTemp
                                strTemp = Mid(Split(strTemp, ",")(0), 4)
                                strList = strList & strTemp & ";"
                            Next
                            strItem = strItem & strList
                        Else
                            strItem = strItem & "Значение атрибута MEMBEROF не определено"
                            Err.Clear
                        End If
                    Else
                        strItem = strItem & "Членство в группах не определено"
                        Err.Clear
                    End If
                    objFile.WriteLine strItem
                Else
                    objFile.WriteLine strItem
                End If
                objRSet.MoveNext
            Loop
            Set objUser = Nothing
        End If
    Else
        objFile.WriteLine "Ошибка " & Err.Number & " (" & Err.Description & ")" & vbNewLine & _
                            " при выполнении запроса: " & arrCmdText(i)
        Err.Clear
    End If
    If i < UBound(arrCmdText) Then objFile.WriteLine
Next
objFile.Close
Set objFile = Nothing
Set objFS = Nothing
Set objRSet = Nothing
Set objCommand = Nothing
objConnection.Close
Set objConnection = Nothing
Set objWShell = CreateObject("WScript.Shell")
objWShell.Run "notepad.exe " & strLog, 1
Set objWShell = Nothing
WScript.Quit 0
Это сообщение посчитали полезным следующие участники:

Отправлено: 16:01, 14-02-2013 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » VBS/WSH/JS - выгрузка из AD информации пользователя

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
PowerShell - [решено] Добавление информации из csv-файла в AD с обработкой IvanXXL Скриптовые языки администрирования Windows 12 23-07-2014 10:49
V. 2010 - [решено] Перепривязка пользователя из AD к почтовому ящику. как реализовать??? goldsmith Microsoft Exchange Server 19 06-06-2012 15:41
Интерфейс - Установка картинки пользователя на основе thumbnailPhoto из AD Delirium Microsoft Windows 7 2 03-04-2012 15:34
Прочие БД - LibreOffice Base и выгрузка информации в Calc cibin Программирование и базы данных 0 24-10-2011 15:15
V. 5.5/2000/2003 - Восстановление ящика пользователя удаленного из AD tivashina Microsoft Exchange Server 2 01-06-2009 21:48




 
Переход