Dotazování služby služba Active Directory pomocí úlohy skriptu

Platí pro:SQL Server SSIS Integration Runtime v rámci Azure Data Factory

Podnikové aplikace pro zpracování dat, jako jsou balíčky integračních služeb, často potřebují zpracovávat data odlišně na základě hodnosti, pracovního titulu nebo jiných charakteristik zaměstnanců uložených v služba Active Directory. služba Active Directory je Microsoft Windows adresářová služba, která poskytuje centralizované úložiště metadat, nejen o uživatelích, ale také o dalších organizačních aktivech, jako jsou počítače a tiskárny. Jmenný prostor System.DirectoryServices v Microsoft .NET Frameworku poskytuje třídy pro práci s služba Active Directory, které vám pomohou řídit workflow zpracování dat na základě uložených informací.

Note

Pokud chcete vytvořit úkol, který lze snadněji znovu použít napříč více balíčky, zvažte použití kódu v tomto ukázkovém skriptu úlohy jako výchozího bodu pro vlastní úkol. Další informace naleznete v tématu Vývoj vlastníhoúloh .

Description

Následující příklad získává jméno, titul a telefonní číslo zaměstnance z služba Active Directory na základě hodnoty email proměnné, která obsahuje e-mailovou adresu zaměstnance. Omezení priority v balíčku mohou využít získané informace například k určení, zda poslat e-mail s nízkou prioritou nebo stránku s vysokou prioritou, na základě pracovního titulu zaměstnance.

Pro konfiguraci tohoto příkladu Script Task

  1. Vytvořte tři řetězcové proměnné email, name, a .title Zadejte platnou firemní e-mailovou adresu jako hodnotu email proměnné.

  2. Na stránce Script v Editoru úloh skriptů přidejte proměnnou email do vlastnosti ReadOnlyVariables .

  3. Přidejte proměnné name a title do vlastnosti ReadWriteVariables .

  4. V projektu skriptů přidejte odkaz na jmenný prostor System.DirectoryServices .

  5. . Ve svém kódu použijte příkaz Imports k importu jmenného prostoru DirectoryServices .

Note

Aby byl tento skript úspěšně spuštěn, musí vaše firma používat služba Active Directory ve své síti a ukládat informace o zaměstnancích, které tento příklad používá.

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