VB.NET - Обновление пользователей в AD на основе Excel Sheet - PullRequest
0 голосов
/ 10 мая 2011

Хорошо, у меня есть этот код, который получает атрибуты пользователей AD из определенного подразделения и загружает информацию в лист Excel. Это работает как надо. Тем не менее, я хотел бы знать, как я могу изменить свой код, чтобы иметь возможность редактировать лист Excel и использовать его для обновления пользователей, из которых он поступил.

Я знаю, что это VB.NET, и я знаю, что есть способы подключения к AD с использованием .NET Framework. Я планирую использовать эту оболочку http://www.codeproject.com/KB/system/active_directory_in_vbnet.aspx позднее. Но сейчас я просто хочу, чтобы это сработало.

Это мой код прямо сейчас. Я знаю, что это, вероятно, небрежно и могло быть сделано лучше. Я буду использовать оболочку, упомянутую выше, как только эта первая версия инструмента будет завершена.

    Public Sub ExportADUsers()

            Dim i As Integer

            Dim strfilter, strAttributes, strScope
            strfilter = "(&(objectCategory=Person)(objectClass=User))"

            strAttributes = "givenName, sn, displayName, mail," & _
            "initials, description, company, title, department," & _
            "location, telephoneNumber, mobile," & _
            "physicalDeliveryOfficeName, streetAddress," & _
            "l, st, postalCode, c, info"

            strScope = "subtree"

            Dim cn, cmd, rs
            cn = CreateObject("ADODB.Connection")
            cmd = CreateObject("ADODB.Command")

            cn.open("Provider=ADsDSOObject;")
            cmd.ActiveConnection = cn
            cmd.commandtext = "LDAP://OU=MyOU,OU=Groups,DC=myDomain,DC=local>;" & strfilter & ";" & strAttributes & ";" & strScope
            rs = cmd.EXECUTE

            Dim objExcel, objWB, objSheet

            objExcel = CreateObject("Excel.Application")
            objWB = objExcel.Workbooks.Add
            objSheet = objWB.Worksheets(1)

            For i = 0 To rs.Fields.Count - 1
                objSheet.Cells(1, i + 1).Value = rs.Fields(i).Name
                objSheet.Cells(1, i + 1).Font.Bold = True
            Next

            objSheet.Range("A2").CopyFromRecordset(rs)
            objSheet.Cells.EntireColumn.AutoFit()
            objSheet.Cells.EntireRow.AutoFit()
            objSheet.SaveAs("C:\Sheet.xlsx")

            'Clean up
            rs.Close()
            cn.Close()
            objSheet = Nothing
            objExcel.Quit()
            objExcel = Nothing

End Sub

Итак, могу ли я использовать этот код в качестве основы для выполнения его наоборот? На самом деле обновление того же набора пользователей с тем же листом Excel, который был создан?

Редактировать: отредактировал код и удалил ненужные биты

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...