Запрос Active Directory в задаче «Сценарий»
Часто корпоративным приложениям обработки данных, например пакетам служб Integration Services, приходится по-разному обрабатывать данные в зависимости от категории, должности и других характеристик сотрудников, сведения о которых хранятся в службе каталогов Active Directory. Active Directory – служба каталогов Microsoft Windows, обеспечивающая централизованное хранение метаданных не только о пользователях, но и об используемых ими корпоративных ресурсах, например, компьютерах и принтерах. Пространство имен System.DirectoryServices платформы Microsoft .NET Framework предоставляет классы для работы со службой каталогов Active Directory, с помощью которых можно управлять потоком операций по обработке данных в зависимости от типа данных.
Примечание |
---|
Если нужно создать задачу, которую будет удобно использовать в нескольких пакетах, рекомендуется начать разработку пользовательской задачи с этого образца задачи «Сценарий». Дополнительные сведения см. в разделе Разработка пользовательской задачи. |
Описание
В следующем примере имя сотрудника, название его должности и номер телефона извлекаются из службы каталогов Active Directory в соответствии со значением переменной email, которая содержит адрес электронной почты сотрудника. Элементы управления очередностью в пакете могут использовать извлеченные данные, чтобы определить, например, с каким приоритетом – низким или высоким – следует отправить сообщение электронной почты, в зависимости от должности сотрудника.
Настройка этого образца задачи «Сценарий»
Создайте три строковые переменные: email, name и title. Введите действительный корпоративный адрес электронной почты в качестве значения переменной email.
На странице Сценарий в редакторе задачи «Сценарий» добавьте переменную email к свойству ReadOnlyVariables.
Добавьте переменные name и title в свойство ReadWriteVariables.
В проекте сценария добавьте ссылку на пространство имен System.DirectoryServices.
. Используйте инструкцию 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;
}
}
Внешние ресурсы
- Техническая статья Обработка информации Active Directory в службах SSIS на сайте social.technet.microsoft.com
|