Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

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?

Frage Entwicklung VB for Applications

Mitglied: berginet

berginet (Level 1) - Jetzt verbinden

01.10.2008, aktualisiert 02.10.2008, 9486 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
Batch & Shell
gelöst AD-Benutzer per Shell auslesen und vergleichen (8)

Frage von ReneBue zum Thema Batch & Shell ...

Batch & Shell
gelöst Mitglieder aus mehreren AD Gruppen mit PowerShell auslesen (2)

Frage von Stefan007 zum Thema Batch & Shell ...

Windows Server
gelöst AD Gruppen werden nicht angepasst (5)

Frage von theoberlin zum Thema Windows Server ...

Batch & Shell
gelöst AD-Gruppen Auswahl als Dropdownliste (4)

Frage von Peterz zum Thema Batch & Shell ...

Neue Wissensbeiträge
Humor (lol)

Taschenrechner in IOS kaputt!

(5)

Information von Lochkartenstanzer zum Thema Humor (lol) ...

Sicherheit

Kanadischer Geheimdienst veröffentlicht erstmals Sicherheitssoftware

(3)

Information von BassFishFox zum Thema Sicherheit ...

Virtualisierung

Docker Monitoring und Steuerung per "sen"

Tipp von Frank zum Thema Virtualisierung ...

Heiß diskutierte Inhalte
Windows 7
Abbruch bei Brennvorgang (26)

Frage von Simulant zum Thema Windows 7 ...

Router & Routing
Externe IP von innen erreichbar machen (16)

Frage von Windows10Gegner zum Thema Router & Routing ...

Firewall
WIndows 7 RDP Massen Angriff (15)

Frage von Motte990 zum Thema Firewall ...