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, 9425 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 Server
gelöst AD-User einer AD-Gruppe auslesen und in ein File schreiben (15)

Frage von Estefania zum Thema Windows Server ...

Windows Userverwaltung
gelöst Gruppenmitgliedschaft einer AD Gruppe per cmd auslesen (2)

Frage von RamboJay zum Thema Windows Userverwaltung ...

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 ...

Neue Wissensbeiträge
Linux Netzwerk

Ping und das einstellbare Bytepattern

Erfahrungsbericht von LordGurke zum Thema Linux Netzwerk ...

Windows Update

Microsoft Update KB4034664 verursacht Probleme mit Multimonitor-Systemen

(3)

Tipp von beidermachtvongreyscull zum Thema Windows Update ...

Viren und Trojaner

CNC-Fräsen von MECANUMERIC werden (ggf.) mit Viren, Trojanern, Würmern ausgeliefert

(4)

Erfahrungsbericht von anteNope zum Thema Viren und Trojaner ...

Heiß diskutierte Inhalte
SAN, NAS, DAS
MSA 2050 RAID Konfig (25)

Frage von Leo-le zum Thema SAN, NAS, DAS ...

Netzwerkmanagement
Windows Server 2008 R2: "netsh reset" nicht verfügbar? (11)

Frage von RickTucker zum Thema Netzwerkmanagement ...

Outlook & Mail
Outlook Suche liefert kein Ergebnise mehr (6)

Frage von Bjoern-B zum Thema Outlook & Mail ...

Windows Server
gelöst "Kiosk"System für Demoversion und neue Versionen einer Anwendung (6)

Frage von kpieper zum Thema Windows Server ...