begin process at 2010 03 18 19:44:24
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Divers

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

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


 Information sur la source

Note :
Aucune note
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 :8 899

Auteur : fabrice69

Ecrire un message privé
Site perso
Ce membre participe au partage de revenus publicitaires
Commentaire sur cette source (4)
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

 Sources du même auteur

SQL SERVER - OBTENIR LES VALEURS CORRESPONDANT A DES UNICODE
SQL SERVER 2000 - VIDER ET COMPACTER TOUTES LES BASES DE DON...
SQL SERVER 2005 : OBTENIR LA LISTE DES BASES DE CONTENU D'UN...
SQL SERVER - OBTENIR LA POSITION DU PREMIER CHIFFRE D'UNE CH...
SQL SERVER - UPDATE D'UNE TABLE EN BOUCLE PAR LOT

 Sources de la même categorie

CAPTURE DES CHANGEMENTS DE DONNÉES (CDC: CHANGE DATA CAPTURE... par wissemhabboub
INTERPRETEUR BRAINFUCK par coucou747
CRÉATION D'UNE BASE DE DONNÉE AVEC FICHIER DE DONNÉES, JOURN... par fearmaker
MYSQL : CRÉATION D'UN GUID par maitredede
SQL SERVER 2005 : OBTENIR LA LISTE DES BASES DE CONTENU D'UN... par fabrice69

Commentaires et avis

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

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]".

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

Commentaire de Arcadams le 10/11/2009 17:22:50

Bonjour,
J'essaie de mettre en place la procédure ci dessus afin de lister les groupes par utilisateur. Par contre la procédure stockée fait référence à une vue inexistante "ListActiveDirectoryGroups" qui n'est pas indiquée.
Cela est il un oubli ou faut-il modifier la vue "ListActiveDirectoryUsers" pour pouvoir s'en servir ? (J'ai bien essayer mais en vain...)

Merci de votre aide.


 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...

Comparez les prix

CalendriCode

Mars 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

Photothèque

 
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

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,952 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales