Jump to content

VBScript Anzeigen aller Gruppen eines Benutzers im AD


Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Empfohlene Beiträge

Hallo zusammen habe die Frage bereits in zwei anderen Foren gestellt, dort jedoch keine Antwort auf meine Fragen bekommen und hoffe nun hier auf Hilfe. Auch deswegen weil mein Beitrag sich auf einen Beitrag des MCSE-Boards bezieht.

 

Ich habe folgendes Problem. Mein Auftrag ist es ein VB-Script zu schreiben, das das Active-Directory nach einem angegebenen Benutzerkreis durchsucht und in einem Excel-Sheet die Gruppen in denen die User enthalten sind sowie das Description/Beschreibungsfeld und den Pfad der jeweiligen Gruppe ausgibt.

 

Bisher ist mein Script soweit:

1. Zu scannede Benutzer über eine Textdatei festlegen

2. Excel-Sheet zur Ausgabe festlegen

3. Ausgabe von DSquery als Textdatei erstellen

4. Textdateien editieren (Umlaute etc.)

5. Dsquery von der Textdatei In ein Excel-Sheet portieren und speichern

6. Dateileichen / DSquery-Textdateien löschen

 

Sicherlich hätte man den Zwischenschritt mit Dsquery und der Textdatei durch einen gezielten AD-Zugriff umgehen können aber da es funktioniert ist es zunächst einmal unwichtig.

 

Ich werde die fertigen Komponenten des Scripts jetzt erstmal nicht posten, da sie mit dem eig. Problem nichts zu tun haben.

 

Es fehlen noch zwei Dinge:

1. Während das Script läuft sollen nach einigen vom User zu bestätigenden MsgBoxen sämtliche Tastatur- und Mauseingabe gesperrt werden. Soweit ich recherchiert habe funktioniert die BlockInput-Funktion von VB nicht bei VBS. Alternativ könnte man das Script über einen AutoIT-Zugriff sperren. Aber da hier nicht auf jedem Rechner AutoIT installiert ist, wird auch das schwierig. Ich habe von einem Kollegen erfahren, dass man aus AutoIT erstellte Scripte von AutoIT zu .exe-Dateien machen kann um so bespielsweise auch auf Rechnern wo kein AutoIT installiert ist die Tastatur / Mauseingabe sperren kann. Ich nehme allerdings an, dass man VB-Scripte nicht mit AutoIT zu .exe-Dateien mit Eingabesperre machen kann.

Kennt ihr noch eine Möglichkeit wie ich die Eingabesperre verwirklichen kann?

 

2. Ich bekomme es nicht hin das Description-Feld einer Gruppe auszulesen und in einem Excel-Sheet zu speichern. Ein Kollege hat dies direkt in Excel mit VBA realisiert. Ich möchte es allerdings in meinem bisherigen VBS-Script realisieren.

 

Hier im Forum gibt es bereits ein ähnliches Anliegen auch wenn es dabei um das Description-Feld eines Computers und nicht einer Gruppe geht.

Wenn ich allerdings die dort angegebene Lösung probiere und diese dann mit einer MsgBox ausgeben möchte, ist die Ausgabe leer.

 

Hier ist mein Versuch mit der oben angegebenen Lösung.

Allerdings kann doch "ADsPath" nicht "Description" enthalten oder?

Ich denke mal nur den Pfad. (Wie kann dann die Lösung funktionieren oder habe ich dort was falsch verstanden?)

 

On Error Resume Next

 

strCN = "Gruppenname"

 

Const ADS_SCOPE_SUBTREE = 2

Set objConnection = CreateObject("ADODB.Connection")

Set objCommand = CreateObject("ADODB.Command")

objConnection.Provider = "ADsDSOObject"

objConnection.Open "Active Directory Provider"

Set objCommand.ActiveConnection = objConnection

objCommand.Properties("Page Size") = 1000

objCommand.Properties("Searchscope") = ADS_SCOPE_SUBTREE

objCommand.CommandText = _

"SELECT ADsPath FROM 'LDAP://DC=intra,DC=firmenname,DC=de' WHERE Name='" & strCN & "'"

Set objRecordSet = objCommand.Execute

objRecordSet.MoveFirst

strADsPath = objRecordSet.Fields("ADsPath").Value

 

MsgBox ADSPath

 

Vielen Dank im Vorraus

Link zu diesem Kommentar

Moin,

 

wenn es dir um das Ergebnis geht und nicht um das Skript, orientiere dich hieran:

faq-o-matic.net Mitglieder einer AD-Gruppe mit Zusatzdaten ausgeben

 

Das Gebastel drumherum halte ich nicht für sinnvoll. Ein Skript hat dem Benutzer nicht die Benutzung seines Rechners zu versagen. Was machst du, wenn das Skript nicht mehr reagiert? Dann hat der Benutzer nur die Wahl, den Rechner hart auszuschalten. Sehr schlechter Stil.

 

Gruß, Nils

Link zu diesem Kommentar

Hallo,

 

wenn's Dir nur darum geht, warum Dein Script nicht läuft...hier ist eine Variante für Dich, probiers mal damit.

 

On Error Resume Next

strCN = "Gruppenname"

Set objConnection = CreateObject("ADODB.Connection")
Set objCommand = CreateObject("ADODB.Command")
objConnection.Provider = "ADsDSOObject"
objConnection.Open "Active Directory Provider"
Set objCommand.ActiveConnection = objConnection
objCommand.CommandText = _
"<LDAP://DC=intra,DC=firmenname,DC=de>;(sAMAccountName=" & strCN & ");[color="Red"]description[/color];subtree" 

Set objRecordSet = objCommand.Execute
objRecordSet.MoveFirst
[color="Red"]strDescription[/color] = objRecordSet.Fields("[color="Red"]description[/color]").Value

MsgBox [color="Red"]strDescription[/color]

 

Der Fehler bei Dir lag übrigens daran, dass

 

1. Du als Ergebnis der Suche (das kam im 'objRecordSet') in die Variable 'strADsPath' geschrieben hast, dann aber versucht hast, eine nicht deklarierte und auch vorher nie benutzte Variable 'ADSPath' auszugeben... ('MsgBox ADSPath'); und

 

2. Du versucht hast, nicht die Description, sondern den gesamten LDAP-Pfad der betreffenden Gruppe ausgeben zu lassen. Das Attribut das Du wolltest, heißt intern tatsächlich auch 'description' :)

 

Ansonsten habe ich eine etwas andere Syntax bei der Abfrage verwendet, nicht den SQL-Style, sondern die LDAP-Syntax, die von einer solchen ADO-Suche auch unterstützt wird. Dabei kann man den Parameter 'Subtree' (der sagt dass in der gesamten domäe in allen OUs gesucht werden soll) direkt mit übergeben...

Deinen "PageSize"-Parameter habe ich auch weggelassen, den braucht man nur, wenn man als Ergebnis der Suche sehr viele Objekte erwartet (bei uns ja nur die eine Gruppe)

 

Eine genaue Anleitung für derartige LDAP-Suchen findest du im SelfADSI LDAP Script Tutorial

http://www.selfadsi.de/search.htm

 

Und eine Übersicht, wie die technischen Attribute von Gruppen heißen, wenn man sie in solchen Suchen verwenden will:

http://www.selfadsi.de/group-attributes-w2k3.htm

 

Gruß,

Philipp

Link zu diesem Kommentar
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Schreibe einen Kommentar

Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor-Fenster leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...