Поделиться через


Запрос Active Directory в задаче «Сценарий»

Часто корпоративным приложениям обработки данных, например пакетам служб Integration Services, приходится по-разному обрабатывать данные в зависимости от категории, должности и других характеристик сотрудников, сведения о которых хранятся в службе каталогов Active Directory. Active Directory – служба каталогов Microsoft Windows, обеспечивающая централизованное хранение метаданных не только о пользователях, но и об используемых ими корпоративных ресурсах, например, компьютерах и принтерах. Пространство имен System.DirectoryServices платформы Microsoft .NET Framework предоставляет классы для работы со службой каталогов Active Directory, с помощью которых можно управлять потоком операций по обработке данных в зависимости от типа данных.

ПримечаниеПримечание

Если нужно создать задачу, которую будет удобно использовать в нескольких пакетах, рекомендуется начать разработку пользовательской задачи с этого образца задачи «Сценарий». Дополнительные сведения см. в разделе Разработка пользовательской задачи.

Описание

В следующем примере имя сотрудника, название его должности и номер телефона извлекаются из службы каталогов Active Directory в соответствии со значением переменной email, которая содержит адрес электронной почты сотрудника. Элементы управления очередностью в пакете могут использовать извлеченные данные, чтобы определить, например, с каким приоритетом – низким или высоким – следует отправить сообщение электронной почты, в зависимости от должности сотрудника.

Настройка этого образца задачи «Сценарий»

  1. Создайте три строковые переменные: email, name и title. Введите действительный корпоративный адрес электронной почты в качестве значения переменной email.

  2. На странице Сценарий в редакторе задачи «Сценарий» добавьте переменную email к свойству ReadOnlyVariables.

  3. Добавьте переменные name и title в свойство ReadWriteVariables.

  4. В проекте сценария добавьте ссылку на пространство имен System.DirectoryServices.

  5. . Используйте инструкцию Imports, чтобы импортировать пространство имен DirectoryServices.

ПримечаниеПримечание

Для успешного выполнения этого сценария необходимо, чтобы в сети организации использовалась служба каталогов Active Directory, и в ней хранились сведения, используемые в этом примере.

Код

Public Sub Main()

    Dim directory As DirectoryServices.DirectorySearcher
    Dim result As DirectoryServices.SearchResult
    Dim email As String

    email = Dts.Variables("email").Value.ToString

    Try
        directory = New _
            DirectoryServices.DirectorySearcher("(mail=" & email & ")")
        result = directory.FindOne
        Dts.Variables("name").Value = _
            result.Properties("displayname").ToString
        Dts.Variables("title").Value = _
            result.Properties("title").ToString
        Dts.TaskResult = ScriptResults.Success
    Catch ex As Exception
        Dts.Events.FireError(0, _
            "Script Task Example", _
            ex.Message & ControlChars.CrLf & ex.StackTrace, _
            String.Empty, 0)
        Dts.TaskResult = ScriptResults.Failure
    End Try

End Sub
        public void Main()
        {
            //
            DirectorySearcher directory;
            SearchResult result;
            string email;

            email = (string)Dts.Variables["email"].Value;

            try
            {
                directory = new DirectorySearcher("(mail=" + email + ")");
                result = directory.FindOne();
                Dts.Variables["name"].Value = result.Properties["displayname"].ToString();
                Dts.Variables["title"].Value = result.Properties["title"].ToString();
                Dts.TaskResult = (int)ScriptResults.Success;
            }
            catch (Exception ex)
            {
                Dts.Events.FireError(0, "Script Task Example", ex.Message + "\n" + ex.StackTrace, String.Empty, 0);
                Dts.TaskResult = (int)ScriptResults.Failure;
            }

        }

Внешние ресурсы

Значок служб Integration Services (маленький) Будьте в курсе новых возможностей служб Integration Services

Загрузить последнюю версию документации, статьи, образцы и видеоматериалы от Майкрософт, а также лучшие решения от участников сообщества можно на странице служб Integration Services на сайтах MSDN или TechNet:

Чтобы получать автоматические уведомления об этих обновлениях, подпишитесь на RSS-каналы, предлагаемые на этой странице.