Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   выгрузка из AD информации пользователя (http://forum.oszone.net/showthread.php?t=253935)

Uranich 13-02-2013 17:21 2089631

выгрузка из AD информации пользователя
 
В интернете нашел скрипты, но есть необходимость выгрузки в файл инфо о пользователе, а именно
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 "Готово."

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

DmitriiV 14-02-2013 16:01 2090374

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

Код:

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



Время: 02:47.

Время: 02:47.
© OSzone.net 2001-