Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

VBScript - prüfen ob Benutzer - Computer Mitglied einer Gruppe ist

Frage Entwicklung Batch & Shell

Mitglied: AndiStroebi

AndiStroebi (Level 1) - Jetzt verbinden

23.07.2012 um 15:11 Uhr, 6431 Aufrufe, 7 Kommentare

Hallo,

ich habe mir vor kurzem ein Script gebastelt mit dem ich über das AD bestimmen kann welcher Benutzer/Computer welchen Drucker automatisch bekommt. Funktioniert auch alles perfekt.

Ich habe jetzt im AD Gruppen die den selben Namen haben wie die Drucker und die Mitglieder der Gruppen bekommen die Drucker automatisch verbunden.

Nun habe ich eben das Problem das ich Abteilungsdrucker habe, die allen Computern einer Abteilung zugeordnet werden müssen. Jetzt würde ich gerne in die Druckergruppe als Mitglied weitere Gruppen hinzufügen (z.B. Abteilung-Buchhaltung).

Jetzt ist meine Frage, wie finde ich mit VBScript herraus ob ein Benutzer/Computer Mitglied einer Gruppe ist, auch wenn er nicht direkt in der Gruppe steht, sondern sich in weiteren Untergruppen versteckt?

Beispiel


->Drucker1
--->User1
--->User2
--->Gruppe1
----->User3
----->User4

Wie finde ich in diesem Beispiel heraus ob User 3 & 4 Mitglieder sind von Drucker1?


Gruß Andi
Mitglied: bioperiodik
23.07.2012 um 15:15 Uhr
Moin,

Muss es unbedingt VB sein?

Evtl. wäre Kix32 was für dich?
Bitte warten ..
Mitglied: bastla
23.07.2012 um 17:54 Uhr
Hallo AndiStroebi!

Schau Dir mal den "Scripting Guy"-Artikel "Determining a User’s Group Memberships" an ...

Grüße
bastla
Bitte warten ..
Mitglied: eazy-isi
24.07.2012 um 07:43 Uhr
Servus,

also ich nutze: http://www.faq-o-matic.net/2011/07/06/jos-version-3-1/ und übergebe das ganze dann an Excel bzw. starte es schon aus Excel heraus.

Gruß
eazy_isi
Bitte warten ..
Mitglied: AndiStroebi
24.07.2012 um 13:53 Uhr
Hallo,

@bioperiodik: das Script ist eben schon zu 99% fertig. Da möchte ich ungern auf etwas anderen umschwenken

@bastla: Sie schon mal gut aus. Muss mal schauen ob mich das weiter bringt. Weil wenn ich es bisher richtig verstanden habe wird hier gesucht in welcher Gruppe ein User ist. Ich sollte aber wissen ob ein User ein Mitglied einer bestimmten Gruppe ist. Hört sich zwar fast gleich an, ist aber ein anderer Ansatz.

@eazy_isi: entweder ich habe es noch nicht richtig verstanden oder ist das nur zum Dokumentationen machen? oder meintest du ich soll mal den Quellcode von dem durchschauen?
Bitte warten ..
Mitglied: bastla
24.07.2012, aktualisiert um 14:03 Uhr
Hallo AndiStroebi!
Ich sollte aber wissen ob ein User ein Mitglied einer bestimmten Gruppe ist. Hört sich zwar fast gleich an, ist aber ein anderer Ansatz.
Die (für mich) einfachste Lösung wäre, alle Gruppen mit einem passenden Trennzeichen (zB "#") in einen String (im Beispiel unten Variable "Groups") zu packen - sähe dann etwa so aus:
#Drucker1#Drucker4#Drucker5#
und dann per "InStr()" abzufragen:
If InStr(Groups, "#" & TheGroup & "#") > 0 Then WScript.Echo "ist in Gruppe " & TheGroup
Grüße
bastla
Bitte warten ..
Mitglied: AndiStroebi
29.07.2012 um 08:26 Uhr
Hi,

leider geht das eben nicht.

Jetzt würde ich herausfinden ob er direkt in einer der Hauptgruppen ist. Das ist eben mein Problem. Ich muss herausfinden ob der Benutzer in einer Untergruppe ist. z.B. Gruppe1 oder sogar Gruppe2.

->Drucker1
--->User1
--->User2
--->Gruppe1
----->User3
----->User4
----->Gruppe2
------->User5
Bitte warten ..
Mitglied: bastla
29.07.2012 um 10:37 Uhr
Hallo AndiStroebi!
Jetzt würde ich ...
Hast Du denn noch nicht?
ob er direkt in einer der Hauptgruppen ist
Hast Du Dir den verlinkten Artikel / das Script überhaupt angesehen? Wenn ja, solltest Du eigentlich gemerkt haben, dass es darin genau darum geht, auch verschachtelte ("nested") Gruppen zu berücksichtigen - eine "direkte" Mitgliedschaft bei der Hauptgruppe ist daher nicht nötig ...

Ich muss allerdings zugeben, dass die Scripting Guys ein Leerzeichen vergessen haben , daher (aber zumindest das Testen überlasse ich Dir):
01.
On Error Resume Next 
02.
 
03.
Set objUser=GetObject("LDAP://" & CreateObject("ADSystemInfo").UserName) 
04.
Set colGroups = objUser.Groups 
05.
Groups = "#" 
06.
For Each objGroup in colGroups 
07.
    Groups = Groups & objGroup.CN & "#" 
08.
    GetNested(objGroup) 
09.
Next 
10.
If InStr(Groups, "#Drucker1#") > 0 Then WScript.Echo "ist in Gruppe ""Drucker1""" 
11.
If InStr(Groups, "#Drucker2#") > 0 Then WScript.Echo "ist in Gruppe ""Drucker2""" 
12.
 
13.
Function GetNested(objGroup) 
14.
    On Error Resume Next 
15.
    colMembers = objGroup.GetEx("memberOf") 
16.
    For Each strMember in colMembers 
17.
        strPath = "LDAP://" & strMember 
18.
        Set objNestedGroup = _ 
19.
        GetObject(strPath) 
20.
        Groups = Groups & objGroup.CN & "#" 
21.
        GetNested(objNestedGroup) 
22.
    Next 
23.
End Function
Grüße
bastla
Bitte warten ..
Ähnliche Inhalte
Neue Wissensbeiträge
RedHat, CentOS, Fedora

Fedora, RedHat, Centos: DNS-Search Domain setzen

(13)

Tipp von Frank zum Thema RedHat, CentOS, Fedora ...

Drucker und Scanner

Samsung SL-M4025ND, firmware update und (kompatible) Tonerkassetten

(1)

Erfahrungsbericht von markus-1969 zum Thema Drucker und Scanner ...

Heiß diskutierte Inhalte
LAN, WAN, Wireless
gelöst Komplett neues Netzwerk, Ubiquiti WLAN, Router, Switch (15)

Frage von Freak-On-Silicon zum Thema LAN, WAN, Wireless ...

CMS
Lokales Wordpress im LAN - wie aufsetzen? (15)

Frage von Static zum Thema CMS ...

RedHat, CentOS, Fedora
Fedora, RedHat, Centos: DNS-Search Domain setzen (13)

Tipp von Frank zum Thema RedHat, CentOS, Fedora ...

Backup
Backup Wochen- Monats- Jahressicherung (13)

Frage von Meterpeter zum Thema Backup ...