AD Gruppenmitgliedschaften via script auswerten

11/02/2010 - 17:50 von Steffen Seitz | Report spam
Hi zusammen,

ich beiss mir gerade die Zàhne aus..

Wir müssen für einen Kunden Laufwerksmappings für User umsetzen. Die zu
mappenden Verzeichnise sind allderings abhànig von den Sicherheitsgruppen in
denen der User Mitglied ist.

Nach ein wenig suchen hab ich nachstehenden VBScript gefunden, welches mir
aus dem AD, den Anmeldenamen und die Gruppenmitgliedschaften leifern soll.

[code]
Option Explicit

Dim adoCommand, adoConnection, strBase, strFilter, strAttributes
Dim objRootDSE, strDNSDomain, strQuery, adoRecordset, strName, strCN

' Setup ADO objects.
Set adoCommand = CreateObject("ADODB.Command")
Set adoConnection = CreateObject("ADODB.Connection")
adoConnection.Provider = "ADsDSOObject"
adoConnection.Open "Active Directory Provider"
Set adoCommand.ActiveConnection = adoConnection

' Search entire Active Directory domain.
Set objRootDSE = GetObject("LDAP://DC=test,DC=schwafel,DC=de")

'mal dient nur der dynamic
REM Set objRootDSE = GetObject("LDAP://RootDSE")
REM strDNSDomain = objRootDSE.Get("defaultNamingContext")
REM strBase = "<LDAP://" & strDNSDomain & ">"

strBase = "<LDAP://DC=test,DC=schwafel,DC=de>"

' Filter on user objects.
strFilter = "(&(objectCategory=person)(objectClass=user))"

' Comma delimited list of attribute values to retrieve.
strAttributes = "sAMAccountNamem,memberOf"

' Construct the LDAP syntax query.
strQuery = strBase & ";" & strFilter & ";" & strAttributes & ";subtree"
adoCommand.CommandText = strQuery
adoCommand.Properties("Page Size") = 100
adoCommand.Properties("Timeout") = 30
adoCommand.Properties("Cache Results") = False

' Run the query.
Set adoRecordset = adoCommand.Execute

' Enumerate the resulting recordset.
Do Until adoRecordset.EOF
' Retrieve values and display.
strName = adoRecordset.Fields("sAMAccountName").Value
arrGroups = adoRecordset.Fields("memberOf").Value
If IsNull(arrGroups) Then
Wscript.Echo "-- No group memberships"
Else
For Each strGroup In arrGroups
Wscript.Echo "-- Member of group: " & strGroup
Next
End If
' Move to the next record in the recordset.
adoRecordset.MoveNext
Loop

' Clean up.
adoRecordset.Close
adoConnection.Close
[/code]

Da ich selber noch nicht wirklich viel mit den ADO Obejketen gemacht habe
steh ich hier ein wenig auf dem Schlauch..

Beim Ausführen des Scriptes kommt es zu einem Laufzeitfehler: 80004005
Quelle: Provider... wie ich bisher recherchieren konnte ist dieser Fehler nur
schwer nachvollziehbar.

Das Script hier nur in der Grundstufe zu sehen, da wenn ich mal an die
Informationen rankomme die Gruppennamen noch durch diverse Textfilter jagen
muss um die Logik für das Laufwerksmapping zu bauen.

Hat einer von euch sowas schon geschrieben, realisiert bzw. im Einsatz ?? Es
kann gerne auch ein Scriptansatz in Powershell sein.

Danke vorab für eure Ideen.

regards
Steffen
 

Lesen sie die antworten

#1 Winfried Sonntag [MVP]
11/02/2010 - 18:18 | Warnen spam
Steffen Seitz schrieb:

Wir müssen für einen Kunden Laufwerksmappings für User umsetzen. Die zu
mappenden Verzeichnise sind allderings abhànig von den Sicherheitsgruppen in
denen der User Mitglied ist.



Muß es unbdingt ein VB-Script sein? Eine Batch mit der IfMember.EXE geht
ganz schnell: http://www.gruppenrichtlinien.de/Ho...cripts.htm

Servus
Winfried
Connect2WSUS: http://www.grurili.de/tools/Connect2WSUS.exe
GPO's: http://www.gruppenrichtlinien.de
Gruppenrichtlinien Mailingliste "gpupdate":
http://frickelsoft.net/cms/index.ph...ilingliste

Ähnliche fragen