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

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, 9215 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 ..
Neuester Wissensbeitrag
CPU, RAM, Mainboards

Angetestet: PC Engines APU 3a2 im Rack-Gehäuse

(1)

Erfahrungsbericht von ashnod zum Thema CPU, RAM, Mainboards ...

Ähnliche Inhalte
Windows Userverwaltung
PS Skript AD Objekte auslesen (1)

Frage von m.reeger zum Thema Windows Userverwaltung ...

Windows Server
gelöst AD-User einer AD-Gruppe auslesen und in ein File schreiben (15)

Frage von Estefania zum Thema Windows Server ...

Batch & Shell
gelöst Powershell Script zum verschachteln von AD Gruppen Domain Übergreifend (1)

Frage von Lukas4580 zum Thema Batch & Shell ...

Batch & Shell
gelöst Powershell Informationen über AD-User auslesen (4)

Frage von Tungdal zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Grafikkarten & Monitore
Win 10 Grafikkarte Crash von Software? (13)

Frage von Marabunta zum Thema Grafikkarten & Monitore ...

DSL, VDSL
DSL-Signal bewerten (13)

Frage von SarekHL zum Thema DSL, VDSL ...

Switche und Hubs
Trunk für 2xCisco Switch. Wo liegt der Fehler? (9)

Frage von JayyyH zum Thema Switche und Hubs ...

Backup
Clients als Server missbrauchen? (8)

Frage von 1410640014 zum Thema Backup ...