[2000] In welke groepen zit een gebruiker

Pagina: 1
Acties:
  • 814 views sinds 30-01-2008
  • Reageer

  • Robvdlooy
  • Registratie: November 2005
  • Laatst online: 10-09 08:08
Hoe kan ik de active directory uitlezen zodat ik kan zien in welke groepen een gebruiker zit, of welke gebruikers in een groep zitten?
Ik wou het daarna exporteren naar b.v. excel of acces

is dit mogelijk?

  • elevator
  • Registratie: December 2001
  • Niet online

elevator

Officieel moto fan :)

Robvdlooy,

Welkom op GoT :)
Wij hebben op GoT teveel regeltjes en richtlijnen opgesteld waar we van verwachten dat iedereen zich hier aan houdt, ik pak nog even de belangrijkste regeltjes eruit:
  • Kies een goede topic titel die je probleem/vraag goed omschrijft - dat doe je.
  • Geef duidelijk en helder aan wat je wilt bereiken, en wat precies het doel is. Geef hierbij zoveel mogelijk versie nummers en rand informatie aan
  • Neem in je topic op wat je zelf al geprobeerd en waar je zelf al opgezocht hebt.
Vooral die twee laatste punten zijn een beetje moeilijk - als ik je vraag namelijk zo lees zeg ik gewoon: "Ga naar Active Directory Users and Computers, vraag de properties op van een user en kijk onder de tab "Member of"", maar dat is vast niet je eigenlijke vraag ;)

  • Tukk
  • Registratie: Januari 2002
  • Laatst online: 19-12 16:41

Tukk

De α-man met het ẞ-brein

Terwijl ik niet veel verstand heb van Active Directory, denk ik dat ik met http://www.google.nl/sear...rg.mozilla:en-US:official
zelf ook nog wel een eind zal kunnen komen, jij niet?

Q: How many geeks does it take to ruin a joke? A: You mean nerd, not geek. And not joke, but riddle. Proceed.


  • Robvdlooy
  • Registratie: November 2005
  • Laatst online: 10-09 08:08
Oke, sorry voor de onduidelijke omschrijving O-) ,
maar ik wil dus een lijst hebben (het liefst in Excel of Acces) van alle groepen in de active directory (windows 2000 server) en welke gebruikers in die groepen staan. Of een lijst van alle gebruikers met daarbij de groepen. Het zou helemaal mooi zijn als ik het op afstand kon doen maar dat hoeft niet perse

Ik heb gegoogled en ik ben wel op 1 ding gekomen:

Naast het kunnen weergeven is het erg belangrijk om groepslidmaatschappen te kunnen achterhalen. We moeten immers de omgeving zoveel mogelijk kunnen toespitsen op de gebruiker. Vbscript kan hier standaard niet mee omgaan daarom maken we gebruik van ADSI (Active Directory Services Interface) om alsnog de benodigde informatie te bemachtigen. De functie ‘getgroups’ vraagt aan AD welke groepen de gebruiker lid van is en slaat deze op. De functie ‘memberof’ controleert vervolgens of de gebruiker lid is van een bepaalde groep. Hierdoor kunnen we commando’s in het loginscript maken zoals deze:
if memberof("Sales") then


Maar ik weet niet hoe ik dit voor elkaar krijg

@Tukk,
Thnx voor de link, ik zal eens kijken maar ik ben heel slecht in engels :'(

  • elevator
  • Registratie: December 2001
  • Niet online

elevator

Officieel moto fan :)

Je zou eens kunnen kijken in Microsofts' scriptcenters vbscript :)

  • Robvdlooy
  • Registratie: November 2005
  • Laatst online: 10-09 08:08
Ik heb een progje gevonden op de microsoft site:EZADScriptomatic
Maar ik snap vrijwel niks van VB :? moet ik dat script nou openen op de server zelf of kan ik het ook op mijn eigen pc doen?

ik kreeg b.v. dit script:

strContainer = ""
strName = "EzAdGroup"

On Error Resume Next

'***********************************************
'* Connect to an object *
'***********************************************
Set objRootDSE = GetObject("LDAP://rootDSE")
If strContainer = "" Then
Set objItem = GetObject("LDAP://" & _
objRootDSE.Get("defaultNamingContext"))
Else
Set objItem = GetObject("LDAP://cn=" & strName & "," & strContainer & "," & _
objRootDSE.Get("defaultNamingContext"))
End If
'***********************************************
'* End connect to an object *
'***********************************************

WScript.Echo VbCrLf & "** General Properties Page**"
WScript.Echo "** (Single-Valued Attributes) **"
strname = objItem.Get("name")
WScript.Echo "name: " & strname
strsamAccountName = objItem.Get("samAccountName")
WScript.Echo "samAccountName: " & strsamAccountName
strdescription = objItem.Get("description")
WScript.Echo "description: " & strdescription
strmail = objItem.Get("mail")
WScript.Echo "mail: " & strmail

WScript.Echo VbCrLf & "** General Properties Page**"
WScript.Echo "** (The groupType attribute) **"
Set objHash = CreateObject("Scripting.Dictionary")
objHash.Add "ADS_GROUP_TYPE_GLOBAL_GROUP", &h2
objHash.Add "ADS_GROUP_TYPE_DOMAIN_LOCAL_GROUP", &h4
objHash.Add "ADS_GROUP_TYPE_UNIVERSAL_GROUP", &h8
objHash.Add "ADS_GROUP_TYPE_SECURITY_ENABLED", &h80000000
intgroupType = objItem.Get("groupType")
For Each Key in objHash.Keys
If objHash(Key) And intgroupType Then
WScript.Echo Key & " is enabled."
Else
WScript.Echo Key & " is disabled."
End If
Next
If intgroupType AND objHash.Item("ADS_GROUP_TYPE_DOMAIN_LOCAL_GROUP") Then
WScript.Echo "Group Scope: Domain Local Group"
ElseIf intGroupType AND objHash.Item("ADS_GROUP_TYPE_GLOBAL_GROUP") Then
WScript.Echo "Group Scope: Global Group"
ElseIf intGroupType AND objHash.Item("ADS_GROUP_TYPE_UNIVERSAL_GROUP") Then
WScript.Echo "Group Scope: Universal Group"
End If
If intgroupType AND objHash.Item("ADS_GROUP_TYPE_SECURITY_ENABLED") Then
WScript.Echo "Group Type: Security"
Else
WScript.Echo "Group Type: Distribution"
End If
WScript.Echo VbCrLf & "** Managed By Properties Page**"
WScript.Echo "** (Single-Valued Attributes) **"
strmanagedBy = objItem.Get("managedBy")
WScript.Echo "managedBy: " & strmanagedBy

If strmanagedBy <> "" Then
Set objItem1 = GetObject("LDAP://" & strManagedBy)
WScript.Echo "physicalDeliveryOfficeName: " & _
objItem1.physicalDeliveryOfficeName
WScript.Echo "streetAddress: " & _
objItem1.streetAddress
WScript.Echo "l: " & _
objItem1.l
WScript.Echo "c: " & _
objItem1.c
WScript.Echo "telephoneNumber: " & _
objItem1.telephoneNumber
WScript.Echo "facsimileTelephoneNumber: " & _
objItem1.facsimileTelephoneNumber
End If

WScript.Echo VbCrLf & "** Member Properties Page**"
WScript.Echo "** (MultiValued Attributes) **"
strmember = objItem.GetEx("member")
WScript.Echo "member:"
For Each Item in strmember
WScript.Echo vbTab & Item
Next

WScript.Echo VbCrLf & "** Member Of Properties Page**"
WScript.Echo "** (MultiValued Attributes) **"
strmemberOf = objItem.GetEx("memberOf")
WScript.Echo "memberOf:"
For Each Item in strmemberOf
WScript.Echo vbTab & Item
Next

WScript.Echo VbCrLf & "** Managed By Properties Page**"
WScript.Echo "** (Single-Valued Attributes) **"
strmanagedBy = objItem.Get("managedBy")
WScript.Echo "managedBy: " & strmanagedBy

If strmanagedBy <> "" Then
Set objItem1 = GetObject("LDAP://" & strManagedBy)
WScript.Echo "physicalDeliveryOfficeName: " & _
objItem1.physicalDeliveryOfficeName
WScript.Echo "streetAddress: " & _
objItem1.streetAddress
WScript.Echo "l: " & _
objItem1.l
WScript.Echo "c: " & _
objItem1.c
WScript.Echo "telephoneNumber: " & _
objItem1.telephoneNumber
WScript.Echo "facsimileTelephoneNumber: " & _
objItem1.facsimileTelephoneNumber
End If

Wat moet ik er dan aan veranderen?

Verwijderd

als vbs nog te heftig is:

net group %group%
net localgroup %group%
net user %username%

Verwijderd

Erm... DSQUERY ?

  • Robvdlooy
  • Registratie: November 2005
  • Laatst online: 10-09 08:08
Verwijderd schreef op woensdag 23 november 2005 @ 12:30:
als vbs nog te heftig is:

net group %group%
net localgroup %group%
net user %username%
thnx! dat werkt best wel goed eigenlijk, maar kan ik die gegevens ook ergens naar transporteren (excel, acces?)

  • Alex)
  • Registratie: Juni 2003
  • Laatst online: 12-12 21:27
Erachter zetten:
> bestand.txt

Dan krijg je het in een lijstje, zelf verder uitvogelen :)

We are shaping the future


  • Robvdlooy
  • Registratie: November 2005
  • Laatst online: 10-09 08:08
Alex schreef op maandag 28 november 2005 @ 15:27:
Erachter zetten:
> bestand.txt

Dan krijg je het in een lijstje, zelf verder uitvogelen :)
O ja, stom dat ik daar niet zelf aan dacht 8)7

thnx!!!

  • Pyrowired
  • Registratie: Februari 2004
  • Laatst online: 05-01 16:00
Hieronder een vb scriptje die van de huidige gebruiker uit AD haalt waar de persoon lid van is en dit in een voorgedefinieerde excel file (deze moet eerst handmatig aangemaakt worden) de gegevens in plemt.

Visual Basic:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
pad = "c:\"
bestand = "hele_leuke_excel_file_waar_de_gegevens_inkomen.xls"
IntI = 2

Set objADSystemInfo = CreateObject("ADSystemInfo")              
Set objUser = GetObject("LDAP://" & objADSystemInfo.UserName)

set excelobj = createobject("excel.application")

excelobj.workbooks.open(pad & bestand)
excelobj.cells(1,1).value = objuser.displayname & "is lid van"

if (isarray(objuser.memberof)) then
    for each obj in objuser.memberof
    tussenGroep = left(obj, instr(1,obj,",",vbtextcompare)-1)
    groep = right(tussengroep, len(tussengroep) - 3) 
         excelobj.cells(IntI,1).value = groep
         IntI = IntI + 1
         next
else
    tussenGroep = left(obj, instr(1,obj,",",vbtextcompare)-1)
    groep = right(tussengroep, len(tussengroep) - 3) 
         excelobj.cells(2,1).value = groep
end if

set objuser = nothing
set objadsysteminfo = nothing

excelobj.visible = true

wscript.quit


Veel meer info over ADSI is hier te vinden en info over Windows Script Host is hier te vinden

Zolang de zon schijnt, blijf ik binnen.


  • Robvdlooy
  • Registratie: November 2005
  • Laatst online: 10-09 08:08
Pyrowired schreef op dinsdag 29 november 2005 @ 00:47:
Hieronder een vb scriptje die van de huidige gebruiker uit AD haalt waar de persoon lid van is en dit in een voorgedefinieerde excel file (deze moet eerst handmatig aangemaakt worden) de gegevens in plemt.

Visual Basic:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
pad = "c:\"
bestand = "hele_leuke_excel_file_waar_de_gegevens_inkomen.xls"
IntI = 2

Set objADSystemInfo = CreateObject("ADSystemInfo")              
Set objUser = GetObject("LDAP://" & objADSystemInfo.UserName)

set excelobj = createobject("excel.application")

excelobj.workbooks.open(pad & bestand)
excelobj.cells(1,1).value = objuser.displayname & "is lid van"

if (isarray(objuser.memberof)) then
    for each obj in objuser.memberof
    tussenGroep = left(obj, instr(1,obj,",",vbtextcompare)-1)
    groep = right(tussengroep, len(tussengroep) - 3) 
         excelobj.cells(IntI,1).value = groep
         IntI = IntI + 1
         next
else
    tussenGroep = left(obj, instr(1,obj,",",vbtextcompare)-1)
    groep = right(tussengroep, len(tussengroep) - 3) 
         excelobj.cells(2,1).value = groep
end if

set objuser = nothing
set objadsysteminfo = nothing

excelobj.visible = true

wscript.quit


Veel meer info over ADSI is hier te vinden en info over Windows Script Host is hier te vinden
dit werkt goed!!, maar kan ik dit ook doen voor alle gebruikers doen en dat dan in één excel bestand stoppen? Ik snap niks van vb :? , maar ik ga eens verder kijken of ik wat op google kan vinden en thnx voor de link's :)

Of zou het ook per groep of alle groepen kunnen? Dat je kunt zien welke gebruikers er in een groep zitten...

[ Voor 14% gewijzigd door Robvdlooy op 29-11-2005 10:16 ]


  • Robvdlooy
  • Registratie: November 2005
  • Laatst online: 10-09 08:08
heeft iemand please nog een idee? _/-\o_

Verwijderd

Je kan al deze informatie met VB uitlezen en in een Excel document plaatsen. Sterker nog, het zou mij bijzonder verbazen als het Scriptrepository op de Microsoft hier niet wat handige scriptjes voor heeft staan. Desalniettemin zou ik je allereerst aanraden om te leren gaan met VB. VBscripts zijn een geweldige tool voor een administrator, en zijn nog veel geweldiger als je ze zelf kan schrijven. In alle eerlijkheden, zo moeilijk is VB niet. Veel succes.
Pagina: 1