begin process at 2008 08 20 11:46:49
1 228 786 membres
158 nouveaux aujourd'hui
14 257 membres club

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 : 5 385

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
10 juillet 2006 12:36:10 :
Modif du titre
10 juillet 2006 14:34:20 :
Modif de la requête pour la vue
  • 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

Pub



Appels d'offres

CalendriCode

Août 2008
LMMJVSD
    123
45678910
11121314151617
18192021222324
25262728293031

Téléchargements

Boutique

Boutique de goodies CodeS-SourceS