VBScript Anzeigen aller Gruppen eines Benutzers im AD
Hallo zusammen habe die Frage bereits in einem anderen Forum gestellt, dort jedoch keine Antwort bekommen und hoffe nun hier auf Hilfe.
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
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 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.
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
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
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 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.
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
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 128041
Url: https://administrator.de/forum/vbscript-anzeigen-aller-gruppen-eines-benutzers-im-ad-128041.html
Ausgedruckt am: 22.02.2025 um 05:02 Uhr
8 Kommentare
Neuester Kommentar
Moin moin
Ok Ernsthaft: Mir erscheint deine Herangehensweise etwas umständlich (so mit dem Umweg über die Text datei und so...)
Hast Du dich hier schon mal umgesehen?
http://gallery.technet.microsoft.com/ScriptCenter/en-us/site/search
Da soltest du eigentlich etwas finden.
Gruß L.
Allerdings kann doch "ADsPath" nicht "Description" enthalten oder?
Nein der AdsPath ist der ADsPath und nur die Description ist die Description. nur wo Nutella draufsteht ist auch Nutella drin!Ok Ernsthaft: Mir erscheint deine Herangehensweise etwas umständlich (so mit dem Umweg über die Text datei und so...)
Hast Du dich hier schon mal umgesehen?
http://gallery.technet.microsoft.com/ScriptCenter/en-us/site/search
Da soltest du eigentlich etwas finden.
Gruß L.
Moin Moin
Gruß L.
1. Eine Benutzereingabe zu verhindern
Benutzereingabe im VBS Skript? Ich vermute du meinst im Excel Sheet. Das würde ich einfach ausblenden.2. Das Description-Feld auszulesen und in Excel zu speichern
Das auslesen könnte so gehen:strCN = "Controlling"
Set objGroup = GetObject _
("LDAP://cn=" & strCN & ",DC=intra,DC=firmenname,DC=de")
WScript.Echo objGroup.Description
Gruß L.
Zitat von @Sandfish:
@2hard4you - Ich möchte das der Benutzer weder absichtlich noch
unabsichtlich das Script stoppt oder eingreift. Ich denke das ist bei
Firmennetzwerken so sinnvoll.
@2hard4you - Ich möchte das der Benutzer weder absichtlich noch
unabsichtlich das Script stoppt oder eingreift. Ich denke das ist bei
Firmennetzwerken so sinnvoll.
das ist mir schon klar, aber ich denke DomAdmins oder Leute mit fast so großen Rechten, können wissen, wann sie ein Script rufen, warum, und das es durchlaufen sollte....
ansonsten haben die ihre Rechte nicht verdient wegen Unkenntnis
Gruß
24
Moin Moin
Was das ausblenden angeht, das folgende Bsp. solte so auch bei Excel funktionieren.
Was das Prozess "killen" angeht kann ich mich 2hard4you nur anschliessen.
Ich möchte dir noch die ans Herz legen.
Inbesondere beim posten von Code.
Gruß L.
Was das ausblenden angeht, das folgende Bsp. solte so auch bei Excel funktionieren.
Set objWord = CreateObject("Word.Application")
objWord.visible = False
objWord.visible = True
objWord.quit
Wofür sind deine Slashes eigentlich?
Für nix. Die hab ich auch nicht getippt. Die sind wohl irgendwie beim kopieren mitreingehuscht.Ich möchte dir noch die ans Herz legen.
Inbesondere beim posten von Code.
Gruß L.