Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

SQL SERVER - LISTER LES COMPTES UTILISATEURS D'UN GROUPE DANS ACTIVE DIRECTORY


Information sur la source

Catégorie :Divers Classé sous : ad, adsi, activedirectory, group, user Niveau : Initié Date de création : 10/07/2006 Date de mise à jour : 10/07/2006 14:34:19 Vu : 7 524

Note :
Aucune note

Commentaire sur cette source (3)
Ajouter un commentaire et/ou une note


Description

Suite à l'article publié :
- http://www.asp-php.net/tutorial/sql-server/linked-server-ad.php

Voila une procédure stockée basée sur une vue, permettant de lister toutes les informations pour les comptes utilisateurs de l'AD appartenant à un groupe donné.

 

Source

  • -------------------------------------------------------
  • -- La vue
  • -------------------------------------------------------
  • CREATE VIEW dbo.ListActiveDirectoryUsers
  • AS
  • SELECT
  • ADsPath AS ADsPath,
  • title AS TITRE,
  • givenName AS PRENOM,
  • sn AS NOM,
  • displayName,
  • sAMAccountName AS LOGIN,
  • telephoneNumber AS TELEPHONE,
  • facsimileTelephoneNumber AS FAX,
  • mobile AS MOBILE
  • FROM OpenQuery(MONSERVEURLIEAD,
  • 'SELECT ADsPath, title, displayName, sAMAccountName,
  • givenName, telephoneNumber, facsimileTelephoneNumber, sn, mobile
  • FROM ''LDAP://DC=ServerControler,DC=Domain,DC=net''
  • where objectClass = ''User'' AND objectCategory = ''Person''')
  • GO
  • -------------------------------------------------------
  • -- La procédure stockée
  • -------------------------------------------------------
  • CREATE PROCEDURE dbo.ListeUsersInGroup
  • @GroupName as VARCHAR(500)
  • AS
  • DECLARE @PathAD AS VARCHAR(1000)
  • DECLARE @SQL AS VARCHAR(5000)
  • SELECT
  • @PathAD = REPLACE(ADsPath, 'LDAP://', '')
  • FROM
  • dbo.ListActiveDirectoryGroups
  • WHERE
  • NomGroup = @GroupName
  • SET @SQL = 'SELECT USR.* FROM OpenQuery(MONSERVEURLIEAD, '
  • SET @SQL = @SQL +'''SELECT sAMAccountName, Adspath '
  • SET @SQL = @SQL +'FROM ''''LDAP://DC=ServerControler,DC=Domain,DC=net'''' '
  • SET @SQL = @SQL +'where memberOf = '''''+ @PathAD +''''''') AD '
  • SET @SQL = @SQL +' INNER JOIN dbo.ListActiveDirectoryUsers USR '
  • SET @SQL = @SQL +' ON AD.Adspath = USR.ADsPath'
  • EXECUTE (@SQL)
  • GO
  • -------------------------------------------------------
  • -- Utilisation de la procédure :
  • -------------------------------------------------------
  • EXEC dbo.ListeUsersInGroup 'GroupeNTAtester'
-------------------------------------------------------
-- La vue 
-------------------------------------------------------
CREATE VIEW dbo.ListActiveDirectoryUsers
AS

SELECT
	ADsPath			AS ADsPath,
	title			AS TITRE,
	givenName		AS PRENOM, 
	sn			AS NOM,
	displayName,
	sAMAccountName		AS LOGIN,
	telephoneNumber		AS TELEPHONE,
	facsimileTelephoneNumber	AS FAX,
	mobile			AS MOBILE
	
FROM OpenQuery(MONSERVEURLIEAD, 
	'SELECT ADsPath, title, displayName, sAMAccountName, 
	givenName, telephoneNumber, facsimileTelephoneNumber, sn, mobile
	FROM ''LDAP://DC=ServerControler,DC=Domain,DC=net'' 
	where objectClass = ''User'' AND objectCategory = ''Person''')

GO

-------------------------------------------------------
-- La procédure stockée 
-------------------------------------------------------
CREATE PROCEDURE dbo.ListeUsersInGroup
	@GroupName as VARCHAR(500)
AS

DECLARE @PathAD AS VARCHAR(1000)
DECLARE @SQL 	AS VARCHAR(5000)

SELECT
	@PathAD = REPLACE(ADsPath, 'LDAP://', '')
FROM 
	dbo.ListActiveDirectoryGroups
WHERE
	NomGroup = @GroupName

SET @SQL = 'SELECT USR.* FROM OpenQuery(MONSERVEURLIEAD, '
SET @SQL = @SQL +'''SELECT sAMAccountName, Adspath '
SET @SQL = @SQL +'FROM ''''LDAP://DC=ServerControler,DC=Domain,DC=net'''' '
SET @SQL = @SQL +'where memberOf = '''''+ @PathAD +''''''') AD '
SET @SQL = @SQL +' INNER JOIN dbo.ListActiveDirectoryUsers USR '
SET @SQL = @SQL +' ON AD.Adspath = USR.ADsPath'

EXECUTE (@SQL)

GO

-------------------------------------------------------
-- Utilisation de la procédure :
-------------------------------------------------------
EXEC dbo.ListeUsersInGroup 'GroupeNTAtester'

Conclusion

Bon coding

Romelard Fabrice
 

Historique

10 juillet 2006 12:36:10 :
Modif du titre
10 juillet 2006 14:34:20 :
Modif de la requête pour la vue

Commentaires et avis

signaler à un administrateur
Commentaire de fabrice69 le 10/07/2006 16:33:29 administrateur CS

Pour contrer la limitation du nombre de retour de l'AD :
- http://blogs.developpeur.org/fabrice69/archive/2006/07/10/22310.aspx

Romelard Fabrice

signaler à un administrateur
Commentaire de Luffy93 le 18/07/2006 14:56:16

Merci pour ce guide au sujet du nombre de retour de l'AD. C'est un problème que je cherche à résoudre depuis très longtemps et j'avais même un peu abandonné. Personnellement je ne sais pas trop pour quoi mais une commande de plus m'a été nécessaire juste après avoir tapé "ntdsutil" : "taper LDAP policies et [Enter]".

signaler à un administrateur
Commentaire de michel_laure le 10/08/2006 11:42:16

bonjour!
je voudrais me connecter à une base sql server 2005 sur delphi7 par ado comment faire?
Merci

Ajouter un commentaire

Discussions en rapport avec ce code source dans le forum

GROUP BY ET tri [ par fcdconnect ] Bonjour,j'aimerai savoir comment trier les resultat groupé dans une requete mysql de ce type : champ de la table :id | num | datetime |etc1 | 0552| 2 privilège group, role, grant [ par rabbiwan ] BonjourJ'ai une petite question.Voila je voudrai administrer des utilisateurs&nbsp;&#224; travers des groups, en mettant les privil&#232;ges sur le gr asp:chaine de connexion oracle [ par abari ] salut tout le monde, svp,j'ai un probl&#233;me c'est que j'arrive pas a se connecter a un serveur oracle a distant depuis ma page asp, voila mon code erreur "Supplied argument is not a valid MySQL result resource" [ par bidjoubob ] Salut,Lorsque je transf&#232;res mon site comportant du PHP et une base de donn&#233;es en MYSQL, j'obtiens l'erreur "Supplied argument is not a valid options user pour mysql [ par bigjacky31 ] Bonjour tout le monde, Voici mon probleme: J'ai install&#233; un serveur mysql sur mon pc, et j'aimerais que celui-ci soit accessible pour un utilisat AU SECOURS !!!!!!!!!!!!!!!!! Requete en MySQL [ par emma1006 ] Salut &#224; tous,J'ai un petit souci pour une requete en MySQL. Ca doit pas &#234;tre bien compliqu&#233;mais moi je sais pas comment faire pour comp Select Distinct sur une colonne [ par thiosyiasar ] Bonjour,Je veux r&#233;cup&#233;rer une liste d'utilisateur dans une table utilisateur. (id, nom, pr&#233;nom, email)L'application qui alimente la tab group by ou non? [ par Rjoe ] bonjour je simplifie mon problemequi est le suivant:je voudrais afficher an executant ma requeteselect nom,prenom,jobfrom ENTREPRISEgroup by jobest ce Double imbrication de requetes avec "GROUP BY" [ par J_G ] Bonjour, Soit les tables Hotel(idChambre, ...) Reservation(idResa, IdChambre, NbPersonne, IdDate) Annulation(IdAnnul, NbAnnule) Je souhaiterai conn Problème de select sur deux table dont une une avec group by [ par vincentstryckmans ] Bonjour, J'ai deux tables : 1. log_data_infra qui enregistre ce que l'utilisateur user_incimii a fait comme op&#233;ration mode_ce</font


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,421 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.