albertminrich
Goto Top

Vbs - Gruppenmitgliedschaften eines Users auslesen?

Hallo,

ich lese per vbs die Gruppenmitgliedschaften eines Users aus.
Eigentlich so:

Set objitem = GetObject("LDAP://CN=meinuser,OU=meinou,DC=meindomaene,DC=lo")  

for each objGroup in objitem.memberof
	Set objGroup = GetObject("LDAP://" & objGroup)  
	wscript.echo objgroup.cn
next

Das funktioniert auch, aber nur bei den Usern, die mindestens in zwei Gruppen sind. Ist der User nur in einer, kommt diese Meldung:
"Laufzeitfehler in Microsoft VBScript: Das Objekt ist keine Auflistung"

Bei diesen Usern funktioniert dagegen das hier:
wscript.echo objitem.memberof

Jetzt wiederum kommt dieser Fehler, wenn ein User in mehr als einer Gruppe ist:
"Laufzeitfehler in Microsoft VBScript: Typen unverträglich"

Wie krieg ich vorher raus, in wievielen Gruppen der User ist?
Ich weiss, ich könnte es über "error resume next" und Abfrage der err.number machen, aber schön ist das nicht.

Geht´s anders?

Danke
Gruß
AlbMin

Content-Key: 180423

Url: https://administrator.de/contentid/180423

Printed on: April 24, 2024 at 15:04 o'clock

Member: bastla
bastla Feb 12, 2012 at 22:16:13 (UTC)
Goto Top
Hallo AlbertMinrich!

Frag doch vorweg, ob es sich um ein Array handelt:
Set objitem = GetObject("LDAP://CN=meinuser,OU=meinou,DC=meindomaene,DC=lo")  
Groups = objItem.memberof

If IsArray(Groups) Then
    For Each Group In Groups
        WScript.Echo GetObject("LDAP://" & Group).cn  
    Next
Else
    WScript.Echo GetObject("LDAP://" & Groups).cn  
End If
Andere Ansätze gäbe es noch im Script Center oder bei Richard L Mueller ...

Grüße
bastla
Member: AlbertMinrich
AlbertMinrich Feb 13, 2012 at 07:52:23 (UTC)
Goto Top
Zitat von @bastla:
Hallo AlbertMinrich!

Frag doch vorweg, ob es sich um ein Array handelt:
Set objitem = GetObject("LDAP://CN=meinuser,OU=meinou,DC=meindomaene,DC=lo")  
> Groups = objItem.memberof
> 
> If IsArray(Groups) Then
>     For Each Group In Groups
>         WScript.Echo GetObject("LDAP://" & Group).cn  
>     Next
> Else
>     WScript.Echo GetObject("LDAP://" & Groups).cn  
> End If
> 

Tja, so einfach, wenn mans weiss.
Danke. Funktioniert einwandfrei.

Gruß
AlbMin