Active Directory'yi Betik Göreviyle Sorgulama

Şunlar için geçerlidir:SQL Server Azure Data Factory'de SSIS Tümleştirme Çalışma Zamanı

Entegrasyon Hizmetleri paketleri gibi kurumsal veri işleme uygulamaları, genellikle Active Directory'de depolanan çalışanların rütbesi, iş unvanı veya diğer özelliklerine göre verileri farklı şekilde işlemek zorundadır. Active Directory, sadece kullanıcılar hakkında değil, aynı zamanda bilgisayarlar ve yazıcılar gibi diğer organizasyon varlıkları hakkında da merkezi bir metaveri deposu sağlayan Microsoft Windows bir dizin hizmetidir. Microsoft .NET Framework'teki System.DirectoryServices isim alanı, depoladığı bilgilere göre veri işleme iş akışını yönlendirmenize yardımcı olmak için Active Directory ile çalışmak için sınıflar sunar.

Note

Birden fazla paket arasında daha kolay yeniden kullanabileceğiniz bir görev oluşturmak istiyorsanız, bu Script görev örneğindeki kodu özel bir görev için başlangıç noktası olarak kullanmayı düşünün. Daha fazla bilgi için bkz. Özel Görev geliştirme.

Description

Aşağıdaki örnek, değişkenin değerine göre Active Directoryemail'den bir çalışanın adı, unvanı ve telefon numarasını alır; bu değişken çalışanın e-posta adresini içerir. Paketteki öncelik kısıtlamaları, alınan bilgiyi kullanarak örneğin çalışanın iş unvanına göre düşük öncelikli bir e-posta mesajı mı yoksa yüksek öncelikli bir sayfa mı gönderileceğini belirleyebilir.

Bu Script Görevi örneğini yapılandırmak için

  1. Üç dizi değişkeni oluşturunname, email, ve title. Değişkenin email değeri olarak geçerli bir kurumsal e-posta adresi girin.

  2. Script Görev Düzenleyicisi'ninScript sayfasında, değişkeni emailReadOnlyVariables özelliğine ekleyin.

  3. ReadWriteVariables özelliğine name ve title değişkenlerini ekleyin.

  4. Script projesinde, System.DirectoryServices isim alanına bir referans ekleyin.

  5. . Kodunuzda, DirectoryServices isim alanını içe aktarmak için Imports ifadesi kullanın.

Note

Bu betikleri başarılı çalıştırmak için, şirketinizin ağında Active Directory kullanması ve bu örnekte kullanılan çalışan bilgilerini depolaması gerekir.

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