Köra frågor mot služba Active Directory med skriptaktiviteten

Gäller för:SQL Server SSIS Integration Runtime i Azure Data Factory

Företagsdatabehandlingsapplikationer, såsom Integration Services-paket, behöver ofta bearbeta data olika beroende på rang, befattning eller andra egenskaper hos anställda som lagras i služba Active Directory. služba Active Directory är en Microsoft Windows katalogtjänst som tillhandahåller ett centraliserat lager av metadata, inte bara om användare utan även om andra organisatoriska tillgångar såsom datorer och skrivare. System.DirectoryServices-namnrymden i Microsoft .NET Framework tillhandahåller klasser för att arbeta med služba Active Directory, för att hjälpa dig styra databehandlingsarbetsflödet baserat på den information som lagras.

Note

Om du vill skapa en uppgift som du lättare kan återanvända över flera paket, överväg att använda koden i detta Script-uppgiftsexempel som utgångspunkt för en anpassad uppgift. Mer information finns i Utveckla en anpassad uppgift.

Description

Följande exempel hämtar en anställds namn, titel och telefonnummer från služba Active Directory baserat på variabelns värdeemail, som innehåller den anställdes e-postadress. Precedensbegränsningar i paketet kan använda den hämtade informationen för att avgöra, till exempel, om ett e-postmeddelande med låg prioritet eller en högprioriterad sida ska skickas, baserat på den anställdes jobbtitel.

För att konfigurera detta exempel på Script Task

  1. Skapa emailde tre strängvariablerna , name, och title. Ange en giltig företags-e-postadress som variabelns värde email .

  2. Script-sidan i Script Task Editor, lägg till variabeln email i egenskapen ReadOnlyVariables .

  3. Lägg till name och titlevariablerna till egenskapen ReadWriteVariables .

  4. I skriptprojektet, lägg till en referens till System.DirectoryServices-namnrymden .

  5. . Använd ett Imports-sats i din kod för att importera namnrymden DirectoryServices .

Note

För att köra detta skript framgångsrikt måste ditt företag använda služba Active Directory på sitt nätverk och lagra den medarbetarinformation som detta exempel använder.

Kod

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