Consultando o Ative Directory com a Tarefa de Script

Aplica-se a: SQL Server SSIS Integration Runtime em Azure Data Factory

Aplicações empresariais de processamento de dados, como os pacotes de Serviços de Integração, muitas vezes precisam de processar os dados de forma diferente consoante a patente, o título do cargo ou outras características dos colaboradores armazenados no Active Directory. Active Directory é um serviço de diretório Microsoft Windows que fornece um armazenamento centralizado de metadados, não só sobre utilizadores, mas também sobre outros ativos organizacionais, como computadores e impressoras. O espaço de nomes System.DirectoryServices no Microsoft .NET Framework fornece classes para trabalhar com Active Directory, para ajudar a direcionar o fluxo de trabalho de processamento de dados com base na informação que armazena.

Note

Se quiser criar uma tarefa que possa reutilizar mais facilmente em vários pacotes, considere usar o código deste exemplo de tarefa Script como ponto de partida para uma tarefa personalizada. Para obter mais informações, consulte Desenvolvendo uma tarefa personalizada.

Description

O exemplo seguinte recupera o nome, cargo e número de telefone de um funcionário do Active Directory com base no valor da email variável, que contém o endereço de e-mail do colaborador. As restrições de precedência no pacote podem usar a informação recuperada para determinar, por exemplo, se enviam uma mensagem de e-mail de baixa prioridade ou uma página de alta prioridade, com base no cargo do empregado.

Para configurar este exemplo de Tarefa de Script

  1. Crie as três variáveis emailstring , name, e title. Insira um endereço de email corporativo válido como valor da email variável.

  2. Na página Script do Editor de Tarefas de Script, adicione a email variável à propriedade ReadOnlyVariables .

  3. Adicione as name variáveis e title à propriedade ReadWriteVariables .

  4. No projeto de script, adicione uma referência ao espaço de nomes System.DirectoryServices .

  5. . No seu código, use uma instrução Imports para importar o espaço de nomes DirectoryServices .

Note

Para executar este script com sucesso, a sua empresa deve estar a usar o Active Directory na sua rede e a armazenar a informação do funcionário que este exemplo utiliza.

Code

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;  
    }  
  
}