Interrogation d'Active Directory avec la tâche de script
Les applications de traitement des données d'entreprise, telles que les packages Integration Services, ont souvent besoin de traiter des données différemment selon l'échelon, le poste ou d'autres caractéristiques des employés stockés dans Active Directory. Active Directory est un service d'annuaire Microsoft Windows qui fournit un magasin centralisé de métadonnées, non seulement sur les utilisateurs, mais aussi sur d'autres ressources organisationnelles telles que les ordinateurs et les imprimantes. L'espace de noms System.DirectoryServices dans le Microsoft .NET Framework fournit des classes à utiliser avec Active Directory, pour vous aider à diriger le flux de travail du traitement des données selon les informations qu'il stocke.
[!REMARQUE]
Si vous souhaitez créer une tâche que vous pouvez réutiliser plus facilement dans plusieurs packages, envisagez d'utiliser le code indiqué dans cet exemple de tâche de script comme point de départ pour une tâche personnalisée. Pour plus d'informations, consultez Développement d'une tâche personnalisée.
Description
L'exemple suivant extrait le nom, le titre et le numéro de téléphone d'un employé dans Active Directory selon la valeur de la variable email, laquelle contient l'adresse de messagerie de l'employé. Les contraintes de précédence dans le package peuvent utiliser les informations extraites pour déterminer, par exemple, s'il faut envoyer un message électronique de priorité basse ou une page prioritaire, selon la fonction de l'employé.
Pour configurer cet exemple de tâche de script
Créez les trois variables de chaîne email, name et title. Entrez une adresse de messagerie professionnelle valide en tant que valeur de la variable email.
Dans la page Script de l'Éditeur de tâche de script, ajoutez la variable email à la propriété ReadOnlyVariables.
Ajoutez les variables name et title à la propriété ReadWriteVariables.
Dans le projet de script, ajoutez une référence à l'espace de noms System.DirectoryServices.
. Dans votre code, utilisez une instruction Imports pour importer l'espace de noms DirectoryServices.
[!REMARQUE]
Pour exécuter ce script correctement, votre entreprise doit utiliser Active Directory sur son réseau et stocker les informations sur l'employé que cet exemple utilise.
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;
}
}
Ressources externes
- Article technique intitulé Processing Active Directory Information in SSIS (en anglais), sur social.technet.microsoft.com
|