begin process at 2012 02 16 23:04:46
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

VBScript

 > RECHERCHE DES INFORMATIONS UTILISATEURS / GROUPES / COMPUTERS DANS ACTIVE DIRECTORY

RECHERCHE DES INFORMATIONS UTILISATEURS / GROUPES / COMPUTERS DANS ACTIVE DIRECTORY


 Information sur la source

Note :
8 / 10 - par 1 personne
8,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :VBScript Classé sous :information, activedirectory, utilisateur, groupe, membre Niveau :Débutant Date de création :25/04/2008 Vu / téléchargé :9 498 / 542

Auteur : drassef14

Ecrire un message privé
Commentaire sur cette source (2)
Ajouter un commentaire et/ou une note

 Description

Bonjour,

Ne sachant pas comment restaurer l'appartenance à un groupe AD, j'ai créé ce petit script qui permet d'enregistrer toutes les informations de type "Membre de" et "Membre" des utilisateurs, ordinateurs et groupes d'un domaine AD.
La variable SavePathFile s'incrémente tous les jours ( différence de jours entre aujourd'hui et le 31/12/2007 )

Source

  • '---------------------------------------------------------------------------------------------------------
  • ' Search Users / Groups / Computers Information in the current Windows domain
  • '---------------------------------------------------------------------------------------------------------
  • set netw=createobject("wscript.network")
  • Set FileSystem = WScript.CreateObject("Scripting.FileSystemObject")
  • set oshell = createobject("wscript.shell")
  • '---------------------------------------------------------------------------------------------------------
  • ' Set the SaveFile
  • '---------------------------------------------------------------------------------------------------------
  • SavePathFile = "C:\Save_AD_" & datediff("d",#31/12/2007#,date) & ".csv"
  • Set OutPutFileTxt = FileSystem.CreateTextFile( SavePathFile, True)
  • OutPutFileTxt.WriteLine "ItemTyp;ItemName;Member Cat.;DistinguishedName"
  • '---------------------------------------------------------------------------------------------------------
  • 'Find the current LDAP Name
  • '---------------------------------------------------------------------------------------------------------
  • Set oRootDSE = GetObject("LDAP://RootDSE")
  • Set oShell = WScript.CreateObject("WScript.Shell")
  • sUserName = oShell.Environment("PROCESS").Item("username")
  • Const ADS_PROPERTY_CLEAR = 1
  • Const ADS_NAME_INITTYPE_GC = 3
  • Const ADS_NAME_TYPE_NT4 = 3
  • Const ADS_NAME_TYPE_1779 = 1
  • strDNSDomain = oRootDSE.Get("defaultNamingContext")
  • Set objTrans = CreateObject("NameTranslate")
  • objTrans.Init ADS_NAME_INITTYPE_GC, ""
  • objTrans.Set ADS_NAME_TYPE_1779, strDNSDomain
  • strNetBIOSDomain = objTrans.Get(ADS_NAME_TYPE_NT4)
  • strNetBIOSDomain = Left(strNetBIOSDomain, Len(strNetBIOSDomain) - 1)
  • strUserNTName = Trim(LogonAccount)
  • objTrans.Set ADS_NAME_TYPE_NT4, strNetBIOSDomain & "\" & strUserNTName
  • If Err.Number <> 0 Then
  • On Error GoTo 0
  • Wscript.Echo "ERROR: Login not found in Active Directory: " & strUserNTName
  • Else
  • On Error GoTo 0
  • strUserDN = objTrans.Get(ADS_NAME_TYPE_1779)
  • LDAP_Name = "LDAP://" & strUserDN
  • End If
  • '---------------------------------------------------------------------------------------------------------
  • ' Main Script
  • '---------------------------------------------------------------------------------------------------------
  • Set oContainer=GetObject(LDAP_Name)
  • EnumerateItems oContainer
  • OpenExcelFile
  • OutPutFileTxt.close
  • '---------------------------------------------------------------------------------------------------------
  • ' EXIT
  • '---------------------------------------------------------------------------------------------------------
  • WScript.Quit(0)
  • '---------------------------------------------------------------------------------------------------------
  • 'Sub "EnumerateItems"
  • '---------------------------------------------------------------------------------------------------------
  • Sub EnumerateItems(oCont)
  • Dim oItem
  • On Error Resume Next
  • For Each oItem In oCont
  • Select Case LCase(oItem.Class)
  • Case "user"
  • strmemberOf = oItem.GetEx("memberOf")
  • OutPutFileTxt.WriteLine "User;" & oItem.cn
  • For Each Item in strmemberOf
  • OutPutFileTxt.WriteLine ";" & oItem.cn & ";IsMemberOf;" & Item
  • next
  • strmemberof = UNSET
  • Case "group"
  • OutPutFileTxt.WriteLine "Group;" & oItem.cn
  • strhasmember = oItem.GetEx("member")
  • For Each Item in strhasmember
  • OutPutFileTxt.WriteLine ";" & oItem.cn & ";HasMember;" & Item
  • next
  • strhasmember = UNSET
  • strmemberOf = oItem.GetEx("memberOf")
  • For Each Item in strmemberOf
  • OutPutFileTxt.WriteLine ";" & oItem.cn & ";IsMemberOf;" & Item
  • next
  • strmemberof = UNSET
  • Case "computer"
  • strmemberOf = oItem.GetEx("memberOf")
  • OutPutFileTxt.WriteLine "Computer;" & oItem.cn
  • For Each Item in strmemberOf
  • OutPutFileTxt.WriteLine ";" & oItem.cn & ";IsMemberOf;" & Item
  • next
  • strmemberof = UNSET
  • Case "organizationalunit", "container"
  • EnumerateItems oItem
  • End Select
  • Next
  • End Sub
  • '---------------------------------------------------------------------------------------------------------
  • 'Open .CSV File in Excel with Filter on the First Line
  • '---------------------------------------------------------------------------------------------------------
  • Sub OpenExcelFile
  • Set objExcel = CreateObject("Excel.Application")
  • objExcel.visible = true
  • objExcel.Workbooks.Open(SavePathFile)
  • objExcel.Range("A1").Select
  • objExcel.Selection.AutoFilter
  • objExcel.Columns("A:D").Select
  • objExcel.Columns("A:D").EntireColumn.AutoFit
  • objExcel.Range("A1:D1").Select
  • objExcel.Selection.Font.Bold = True
  • objExcel.Selection.Interior.ColorIndex = 15
  • End Sub
'---------------------------------------------------------------------------------------------------------
' Search Users / Groups / Computers Information in the current Windows domain
'---------------------------------------------------------------------------------------------------------
set netw=createobject("wscript.network")
Set FileSystem = WScript.CreateObject("Scripting.FileSystemObject")
set oshell = createobject("wscript.shell")
'---------------------------------------------------------------------------------------------------------
' Set the SaveFile
'---------------------------------------------------------------------------------------------------------
SavePathFile = "C:\Save_AD_" & datediff("d",#31/12/2007#,date) & ".csv"
Set OutPutFileTxt = FileSystem.CreateTextFile( SavePathFile, True)
OutPutFileTxt.WriteLine "ItemTyp;ItemName;Member Cat.;DistinguishedName"
'---------------------------------------------------------------------------------------------------------
'Find the current LDAP Name
'---------------------------------------------------------------------------------------------------------
Set oRootDSE = GetObject("LDAP://RootDSE")
Set oShell = WScript.CreateObject("WScript.Shell")
sUserName = oShell.Environment("PROCESS").Item("username")
Const ADS_PROPERTY_CLEAR = 1
Const ADS_NAME_INITTYPE_GC = 3
Const ADS_NAME_TYPE_NT4 = 3
Const ADS_NAME_TYPE_1779 = 1
strDNSDomain = oRootDSE.Get("defaultNamingContext")
Set objTrans = CreateObject("NameTranslate")
objTrans.Init ADS_NAME_INITTYPE_GC, ""
objTrans.Set ADS_NAME_TYPE_1779, strDNSDomain
strNetBIOSDomain = objTrans.Get(ADS_NAME_TYPE_NT4)
strNetBIOSDomain = Left(strNetBIOSDomain, Len(strNetBIOSDomain) - 1)
strUserNTName = Trim(LogonAccount)
objTrans.Set ADS_NAME_TYPE_NT4, strNetBIOSDomain & "\" & strUserNTName
If Err.Number <> 0 Then
	On Error GoTo 0
	Wscript.Echo "ERROR: Login not found in Active Directory: " & strUserNTName 
Else
	On Error GoTo 0
	strUserDN = objTrans.Get(ADS_NAME_TYPE_1779)
	LDAP_Name = "LDAP://" & strUserDN 
End If 
'---------------------------------------------------------------------------------------------------------
' Main Script
'---------------------------------------------------------------------------------------------------------
Set oContainer=GetObject(LDAP_Name)
EnumerateItems oContainer
OpenExcelFile
OutPutFileTxt.close
'---------------------------------------------------------------------------------------------------------
' EXIT
'---------------------------------------------------------------------------------------------------------
WScript.Quit(0) 
'---------------------------------------------------------------------------------------------------------
'Sub "EnumerateItems"
'---------------------------------------------------------------------------------------------------------
	Sub EnumerateItems(oCont)
	Dim oItem
	On Error Resume Next
	For Each oItem In oCont
		Select Case LCase(oItem.Class)
			Case "user"
				strmemberOf = oItem.GetEx("memberOf")
				OutPutFileTxt.WriteLine "User;" & oItem.cn
				For Each Item in strmemberOf
					OutPutFileTxt.WriteLine ";" & oItem.cn & ";IsMemberOf;" & Item
				next
				strmemberof = UNSET
			Case "group"
				OutPutFileTxt.WriteLine "Group;" & oItem.cn
				strhasmember = oItem.GetEx("member")
				For Each Item in strhasmember
					OutPutFileTxt.WriteLine ";" & oItem.cn & ";HasMember;" & Item
				next
				strhasmember = UNSET
				strmemberOf = oItem.GetEx("memberOf")
				For Each Item in strmemberOf
					OutPutFileTxt.WriteLine ";" & oItem.cn & ";IsMemberOf;" & Item
				next
				strmemberof = UNSET
			Case "computer"
				strmemberOf = oItem.GetEx("memberOf")
				OutPutFileTxt.WriteLine "Computer;" & oItem.cn
				For Each Item in strmemberOf
					OutPutFileTxt.WriteLine ";" & oItem.cn & ";IsMemberOf;" & Item
				next
				strmemberof = UNSET
			Case "organizationalunit", "container"
				EnumerateItems oItem
		End Select
	Next
	End Sub

'---------------------------------------------------------------------------------------------------------
'Open .CSV File in Excel with Filter on the First Line
'---------------------------------------------------------------------------------------------------------
Sub OpenExcelFile
	Set objExcel = CreateObject("Excel.Application")
	objExcel.visible = true
	objExcel.Workbooks.Open(SavePathFile)
	objExcel.Range("A1").Select
	objExcel.Selection.AutoFilter
	objExcel.Columns("A:D").Select
	objExcel.Columns("A:D").EntireColumn.AutoFit
	objExcel.Range("A1:D1").Select
	objExcel.Selection.Font.Bold = True
	objExcel.Selection.Interior.ColorIndex = 15
End Sub

 Conclusion


Grace à ces fichiers .CVS si ce script est exécuté régulièrement, vous pourrez retrouver toutes les informations ActiveDirectory.

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Sources du même auteur

Source avec Zip COMMENT RENOMMER UN OU PUSIEURS NOM DE GROUPES ACTIVE DIRECT...
Source avec Zip SIGNATURE STANDARDISÉE DANS OUTLOOK VIA PARAMÈTRES ACTIVE DI...

 Sources de la même categorie

Source avec Zip Source avec une capture RECHERCHE & SAUVEGARDE DES FICHIERS PAR LEURS EXTENSIONS par hackoo
Source avec Zip Source avec une capture [VBS] SPLASH SCREEN EN VBSCRIPT par hackoo
Source avec Zip Source avec une capture [VBS] GOOGLE EASTER EGGS par hackoo
Source avec Zip Source avec une capture FILE2COMPARE: COMPARAISON DE DEUX FICHIERS LIGNE PAR LIGNE par hackoo
Source avec Zip Source avec une capture [VBS] COMMENT CRÉER UN DOSSIER ET LE PROTÉGER PAR MOT DE PAS... par hackoo

 Sources en rapport avec celle ci

Source avec Zip PROGRAMME DE CONJUGAISON D'UN VERBE EN PREMIER GROUPE (VB) par estGI
Source avec Zip Source .NET (Dotnet) [VB2008] OBSERVER L'ACTIVITÉ INPUT (CLAVIER SOURIS) DE L'UTI... par PCPT
SCRIPT DONNANT DES INFORMATIONS SUR LE(S) PROCESSEUR(S) par djebbipgm
Source avec Zip Source .NET (Dotnet) BOITE DE DIALOGUE : SÉLECTIONNER (RECHERCHER) DES UTILISATEU... par ShareVB
Source avec Zip INTÉGRATION MASSIVES ET ÉVOLUTIVES DE COMPTES ACTIVE DIRECTO... par snaps

Commentaires et avis

Commentaire de LEFEUVRE le 01/10/2008 09:24:17 8/10

Merci pour cette exemple de code d'extraction d'informations d'AD. Il m'a été très utile. Par contre le traitement des info à partir d'un fichier csv dans Excel est long à s'exécuter, j'ai du transformer le code pour une exécution directe dans Excel et beaucoup plus rapide.

Commentaire de beetleman le 18/02/2010 14:11:56

Bonjour,

Je cherche un code qui permet de créer des OU et des users dans Windows serveur 2003 à partir d'un fichier excel avec les renseignements.
merci

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

Signet et ASP [ par vbfrogs ] Bonjour,J'ai besoin de votre aide....J'ai une page ASP dans laquelle je crée des signets pour chaque groupe d'enregistrement... Lorsque l'utilisateur Signet et ASP [ par vbfrogs ] Bonjour,J'ai besoin de votre aide....J'ai une page ASP dans laquelle je crée des signets pour chaque groupe d'enregistrement... Lorsque l'utilisateur Signet et ASP [ par vbfrogs ] Bonjour,J'ai besoin de votre aide....J'ai une page ASP dans laquelle je crée des signets pour chaque groupe d'enregistrement... Lorsque l'utilisateur Signet et ASP [ par vbfrogs ] Bonjour,J'ai besoin de votre aide....J'ai une page ASP dans laquelle je crée des signets pour chaque groupe d'enregistrement... Lorsque l'utilisateur Problème VBA [ par garfunkel ] Je travaille sous access 97, j'ai plusieurs groupes d'utilisateurs et j'aimerais que lorsque j'ouvre un formulaire je test le groupe de l'utilisateur, probléme ADsError help [ par ganbalfro ] Je veux creer des compte utilisateur sur windows 2000 server.Le probléme c'est que j'ai toujours une erreur Il me dit :L'objet ADsError n'est pas inst Utilisateur incorrect après compilation, mais valide à l'interprétation [ par happexamendios ] Bonjour,j'ai une procédure qui est censée me mettre un utilisateur spécifié dans un groupe global de mon active directory.le code utilise des droits e Modifier les parametre d'ouverture en fonction de l'utilisateur [ par katmandou ] Bonjour,&nbsp; voila mon probleme, j'ai cr&#233;e une base de donnees access (access 97), et je l'ai securise avec l'assistant securit&#233; au niveau Groupe de l'active directory [ par slyman99 ] Comment je fait pour déterminer si l'utilisateur X appartien au groupe Y pour l'instant j'ai essayer: (Avec "Active DS Type Library") Public Functi les information d'un textbox vers une base de donnée [ par cricri_b34 ] SalutJ'ai créer un programme avec deux textbox: Nom d'UtilisateurMot de passeet un bouton:EnvoyerJ'aimerais que l'orsque je clique sur envoyer, le Nom


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

 
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,811 sec (3)

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