J'ai une procédure stockée créée par l'utilisateur dans un serveur de base de données qui interroge le répertoire actif pour les informations utilisateur et insère les données dans une table. Nous souhaitons supprimer l'opération du serveur de base de données et effectuer la requête AD initiale et l'insertion de données dans un appel externe (PowerShell ou C#).ADsDSOObject & .NET renvoie différentes valeurs (types) pour objectSID
La procédure stockée utilise les procédures sp_OA pour créer un ADsDSOObject pour effectuer la requête AD réelle. Il semble que ADsDSOObject renvoie l'objet objectSID en hexadécimal par défaut. Voici un exemple de valeur de sortie.
-- ADsDSOObject: 0x010500000000000515000000D94242061941C67FC9004A20EE030000
Quand je lance une requête ADSI par PowerShell, j'obtenir un tableau d'octets pour le objectSID que je peux transformer en une chaîne par l'intermédiaire du System.Security.Principal.SecurityIdentifier .NET (<objectSID>
, 0).
Ceci renvoie l'identificateur SID de la chaîne dans sa forme SID correcte.
-- Byte Array: {1, 5, 0, 0, 0, 0, 0, 5, 21, 0, 0, 0, 217, 66, 66, 6, 25, 65, 198, 127, 201, 0, 74, 32, 245, 1, 0, 0}
-- .NET SID: S-1-5-21-105005785-2143699225-541720777-501
Cependant, je dois stocker les données sous forme binaire afin de remplacer la procédure dans la base de données avec une solution .NET afin d'éviter tout changement dans l'application. En utilisant PowerShell ou C#, quelqu'un sait comment convertir le tableau d'octets en hexadécimal ou comment convertir la représentation SID de la chaîne en hexadécimal?
Merci, cela fonctionne exactement comme j'ai besoin! – m4rty
Vous êtes bienvenu, si oui pouvez-vous mettre la réponse comme bonne réponse? – JPBlanc