2011-05-24 2 views
2

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?

Répondre

1

Voici une solution:

PS> $sid = New-Object System.Security.Principal.SecurityIdentifier ("S-1-5-21-105005785-2143699225-541720777-501") 
PS> $c = New-Object 'byte[]' $sid.BinaryLength 
PS> $sid.GetBinaryForm($c, 0) 

$ c contient le tableau d'octets dont vous avez besoin.

+0

Merci, cela fonctionne exactement comme j'ai besoin! – m4rty

+0

Vous êtes bienvenu, si oui pouvez-vous mettre la réponse comme bonne réponse? – JPBlanc

Questions connexes