Top-Themen

Aktuelle Themen (A bis Z)

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

VBS - AD Gruppen auslesen und vergleichen?

Mitglied: berginet

berginet (Level 1) - Jetzt verbinden

01.10.2008, aktualisiert 02.10.2008, 9628 Aufrufe, 5 Kommentare

Neuling braucht etwas Hilfestellung

Ich möchte mit VBS aus 2 Gruppen auslesen das ich soweit auch schon hinkriege was ich aber nicht weiss, wie kann ich die User der beiden Gruppen dann miteinander vergleichen ob ein User in beiden Gruppen auftaucht.

Mein Skript bisher was nur die Gruppen ausliest.

01.
 
02.
Option Explicit 
03.
 
04.
DIM network, domainname 
05.
DIM objGroup1, objGroup2, arrMemberOf1, arrMemberOf2, strMember 
06.
DIM i, z, wert 
07.
 
08.
on error resume next 
09.
 
10.
'************************************************************************************************************** 
11.
 
12.
set network = CreateObject("Wscript.Network") 
13.
 
14.
domainname = network.UserDomain				    
15.
 
16.
set objGroup1 = GetObject("LDAP://CN=Gruppe1,CN=Users,DC=" &domainname &",DC=test") 
17.
objGroup1.GetInfo 
18.
 
19.
set objGroup2 = GetObject("LDAP://CN=Gruppe2,CN=Users,DC=" &domainname &",DC=test") 
20.
objGroup2.GetInfo  
21.
 
22.
arrMemberOf1 = objGroup1.GetEx("member") 
23.
arrMemberOf2 = objGroup2.GetEx("member") 
24.
 
25.
'************************************************************************************************************** 
26.
i = 0 
27.
z = 0 
28.
For Each strMember in arrMemberOf1  
29.
    	if strmember <> "" THEN 
30.
    		WScript.echo strMember 
31.
		i = i + 1 
32.
	end if 
33.
Next 
34.
For Each strMember in arrMemberOf2      
35.
    	if strmember <> "" THEN 
36.
    		WScript.echo strMember 
37.
		z = z + 1 
38.
	end if 
39.
Next 
40.
 
41.
wscript.echo "i" &i 
42.
wscript.echo "z" &z 
43.
 
Für Hilfestellung wäre ich sehr dankbar.

lg
Alex
Mitglied: bastla
01.10.2008 um 15:23 Uhr
Hallo berginet und willkommen im Forum!

Ungetestet etwa so:
01.
Option Explicit 
02.
 
03.
DIM network, domainname 
04.
DIM objGroup1, objGroup2, arrMemberOf1, arrMemberOf2, strMember, strG2 
05.
 
06.
on error resume next 
07.
 
08.
'************************************************************************************************************** 
09.
 
10.
set network = CreateObject("Wscript.Network") 
11.
 
12.
domainname = network.UserDomain				    
13.
 
14.
set objGroup1 = GetObject("LDAP://CN=Gruppe1,CN=Users,DC=" &domainname &",DC=test") 
15.
objGroup1.GetInfo 
16.
 
17.
set objGroup2 = GetObject("LDAP://CN=Gruppe2,CN=Users,DC=" &domainname &",DC=test") 
18.
objGroup2.GetInfo  
19.
 
20.
arrMemberOf1 = objGroup1.GetEx("member") 
21.
arrMemberOf2 = objGroup2.GetEx("member") 
22.
 
23.
'************************************************************************************************************** 
24.
strG2 = "#" & Join(arrMemberOf2, "#") & "#" 
25.
For Each strMember in arrMemberOf1  
26.
    If strMember <> "" THEN 
27.
        If InStr(strG2, "#" & strMember & "#") > 0 Then WScript.Echo strMember 
28.
    End If 
29.
Next 
30.
 
31.
WScript.Echo "Anzahl Gruppe 1: " & CStr(UBound(arrMemberOf1)) 
32.
WScript.Echo "Anzahl Gruppe 2: " & CStr(UBound(arrMemberOf2))
Durch das Zusammenfassen der in Gruppe 2 befindlichen User in einen String kann anstelle einer Schleife über alle User einfach mit "InStr()" gesucht weden. Damit keine Teilstrings gefunden werden (zB "bauer" in "unterbauer") wird jeder Username durch "#" begrenzt.
Weitere Alternative zu der beschriebenen Vorgangsweise: Ein "dictionary" aufbauen ...

Grüße
bastla

[Edit] In Zeile 24 auf "arrMemberOf2" korrigiert [/Edit]
Bitte warten ..
Mitglied: Logan000
01.10.2008 um 15:29 Uhr
Moin Moin

Du muss Deine beiden For-next schleifen schachteln.
Etwa so:
01.
... 
02.
For Each strMember1 in arrMemberOf1  
03.
   if strmember1 <> "" THEN 
04.
      For Each strMember2 in arrMemberOf2      
05.
         if strmember2 <> "" THEN 
06.
            If strmember1 = strmember2 Then 
07.
               wscript.echo strmember1 & " ist in beiden Gruppen vorhanden." 
08.
            end if 
09.
         end if 
10.
      Next 
11.
   end if 
12.
Next 
13.
...
Gruß L.
Bitte warten ..
Mitglied: berginet
02.10.2008 um 11:54 Uhr
Hallo vielen Dank für die schnelle Hilfe, werde beide Varianten testen.

Kann es aber sein, dass bei StrG2 die arrMemberOf2 nicht 1 zusamengefasst werden müssen?

Das mit dem Dictionary wenn Du kurz erläutern könntest wäre super, aber ich kanns auch suchen wenn ich mal dazu komme.

Sorry das ich erst jetzt Antworten konnte.
lg
Bergi
Bitte warten ..
Mitglied: berginet
02.10.2008 um 11:54 Uhr
Hallo vielen Dank für die schnelle Hilfe, werde beide Varianten testen.
Sorry das ich erst jetzt Antworten konnte.
lg
Bergi
Bitte warten ..
Mitglied: bastla
02.10.2008 um 13:06 Uhr
Hallo berginet!

Kann es aber sein, dass bei StrG2 die arrMemberOf2 nicht 1 zusamengefasst werden müssen?
Es kann nicht sein, sondern muss - sorry, war falsch ...
Bei der Variante "dictionary" würden die Zeilen ab 24 etwa so aussehen:
01.
Set d2 = CreateObject("Scripting.Dictionary") 
02.
d2.CompareMode = vbTextCompare 
03.
 
04.
For Each strMember In arrMemberOf2 
05.
  d2.Add strMember, "" 
06.
Next 
07.
 
08.
For Each strMember In arrMemberOf1 
09.
  If d2.Exists(strMember) Then WScript.Echo strMember 
10.
Next
Eigentlich ist ein "dictionary" dazu gedacht, Wertepaare (bestehend aus Schlüssel und zugeordnetem Wert) aufzunehmen - da hier aber nur der Schlüssel (bzw dessen allfälliges Vorhandensein) interessiert, wird als Wert jeweils ein Leerstring zugewiesen.

Doku: http://msdn.microsoft.com/en-us/library/x4k5wbx4(VS.85).aspx

Grüße
bastla
Bitte warten ..
Ähnliche Inhalte
Windows Userverwaltung
AD Gruppen User auslesen
Frage von pgWindows Userverwaltung1 Kommentar

Guten Tag, ich bin auf der Suche nach einem Programm welches mit die User eines AD ausliest und mir ...

Windows Server

AD-User einer AD-Gruppe auslesen und in ein File schreiben

gelöst Frage von EstefaniaWindows Server15 Kommentare

Guten Abend. Ich habe eine Frage an Experten. Suche ein einfaches Script, wo mir AD-User einer von mir ausgewählten ...

Batch & Shell

AD: Alle Gruppenmitgliedschaften von Benutzern auslesen, die in einer Gruppe sind

Frage von tiemunBatch & Shell1 Kommentar

Hallo zusammen, ich komme gerade nicht weiter. Ich habe eine Gruppe aus der ich alle Benutzer auslese: Get-ADGroupMember "Gruppe" ...

Batch & Shell

Vergleich AD-Gruppe Postfach mit Powershell und EMS

Frage von lugmdkBatch & Shell1 Kommentar

Hallo Community! Ich möchte mittels einem regelmäßigem Skript den Mitgliedern von bestimmten AD-Gruppen Vollzugriff auf bestimmte Exchange-Postfächer geben. An ...

Neue Wissensbeiträge
CMS
Erneut kritische Zero-Day-Lücke in Drupal
Tipp von Reini82 vor 2 StundenCMS

Laut einem Bericht auf t3n gibt es eine Schwere Sicherheitslücke in Drupal die auch schon ausgenutzt wird. Betroffen sind ...

Sicherheit

MikroTik-Router patchen, Schwachstelle wird ausgenutzt

Information von kgborn vor 22 StundenSicherheit

Am 23. April 2018 wurde von Mikrotik ein Security Advisory herausgegeben, welches auf eine Schwachstelle im RouterOS hinwies. Mikrotik ...

Windows 10

Microcode-Updates KB4090007, KB4091663, KB4091664, KB4091666 für Windows 10

Information von kgborn vor 1 TagWindows 101 Kommentar

Kurze Information für Administratoren von Windows 10-Systemen, die mit neueren Intel CPUs laufen. Microsoft hat zum 23. April 2018 ...

iOS
Updates für Iphone und Co
Information von sabines vor 1 TagiOS

Gestern abend ist iOS 11.3.1 erschienen, ein kleineres Update, dass einige Lücken schließt und "Lahmlegen" nach einem Display Tausch ...

Heiß diskutierte Inhalte
Batch & Shell
Powershell: Im AD nach Rechnern mit bestimmten IP-Adressen suchen
gelöst Frage von Raven42Batch & Shell36 Kommentare

Hallo zusammen, ich suche nach einer Möglichkeit nach Computern im AD zu suchen , deren IP-Adresse mit 10.11.12. beginnt. ...

Windows Server
Alten DC entfernen
gelöst Frage von smartinoWindows Server27 Kommentare

Hallo zusammen, ich habe hier eine Umgebung übernommen und erstmal einen DCDIAG gemacht. Dabei fällt auf, daß eine ganze ...

Ausbildung
Wie gelingt ein guter Einstieg in die FiSi-Ausbildung? (Umschulung)
Frage von SiAnKoAusbildung25 Kommentare

Schönen guten Tag, ich bin SiAnKo und habe seit dem 1.04.2018 eine Umschulung als FiSi angefangen. Ich möchte natürlich ...

Batch & Shell
Mit Powershell den Inhalt einer Excel mit einer Text Datei abgleichen
gelöst Frage von Bommi1961Batch & Shell21 Kommentare

Hallo zusammen, ich muss den Inhalt einer Excel Datei (Mappe1) mit dem Daten einer Text Datei abgleichen. Die Daten ...