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
GELÖST

VBS LDAP - Auslesen ob Benutzerkonto deaktiviert ist, wenn nicht...

Frage Entwicklung

Mitglied: DemseinAdmin

DemseinAdmin (Level 1) - Jetzt verbinden

23.11.2009 um 08:40 Uhr, 8301 Aufrufe, 10 Kommentare

soll der Benutzer zur Anzahl der Mitglieder einer Gruppe addiert werden.

Hallo zusammen,

ich habe da noch ein Problem mit einem Skript von mir. Ziel ist es, alle Benutzer in den Gruppen einer bestimmten OU auszulesen und in eine Textdatei zu schreiben.

Hier mein bisheriger Code:

01.
Option Explicit 
02.
 
03.
Dim GROUP, OUNIT, DOMAENE, FSO, RESULTFILE, SOURCEFILE, LIST, RESULT, ANZ, ARRMEMBEROF, MEMBER 
04.
 
05.
Set FSO = CreateObject("Scripting.FileSystemObject") 
06.
RESULTFILE = "dat\result.txt" 
07.
Set RESULT = FSO.OpenTextFile(RESULTFILE, 2) 
08.
 
09.
RESULT.WriteLine("+++BEGINN RESSOURCENGRUPPEN+++") 
10.
 
11.
'+++++++++++++++++++++++++++++++++++ 
12.
'Ressourcen-Gruppen Quelle festlegen 
13.
SOURCEFILE = "dat\ou_res.txt" 
14.
OUNIT = "res" 
15.
'+++++++++++++++++++++++++++++++++++ 
16.
 
17.
If FSO.FileExists(SOURCEFILE) Then 
18.
	Set LIST = FSO.OpenTextFile(SOURCEFILE, 1) 
19.
	Do While Not (LIST.AtEndOfStream) 
20.
		On Error Resume Next 
21.
		GROUP = LIST.ReadLine 
22.
		Set DOMAENE = GetObject("LDAP://blablablubb") 
23.
		ANZ = 0 
24.
		ARRMEMBEROF = DOMAENE.GetEx("member") 
25.
		If (Err.Number = 0) Then  
26.
			ANZ  = UBound(ARRMEMBEROF) + 1  
27.
		End If 
28.
		On Error GoTo 0 
29.
		If (ANZ >= 1) then 
30.
			RESULT.WriteLine(GROUP) 
31.
			For Each MEMBER In ARRMEMBEROF 
32.
				RESULT.WriteLine(MEMBER) 
33.
			Next 
34.
		Else 
35.
			RESULT.WriteLine(GROUP) 
36.
		End If 
37.
	Loop 
38.
	Set LIST = Nothing 
39.
End If 
40.
 
41.
RESULT.WriteLine("+++ENDE RESSOURCENGRUPPEN+++") 
42.
RESULT.WriteLine("+++BEGINN USERGRUPPEN+++") 
43.
 
44.
'+++++++++++++++++++++++++++++++++++ 
45.
'User-Gruppen Quelle festlegen 
46.
SOURCEFILE = "dat\ou_usr.txt" 
47.
OUNIT = "usr" 
48.
'+++++++++++++++++++++++++++++++++++ 
49.
 
50.
If FSO.FileExists(SOURCEFILE) Then 
51.
	Set LIST = FSO.OpenTextFile(SOURCEFILE, 1) 
52.
	Do While Not (LIST.AtEndOfStream) 
53.
		On Error Resume Next 
54.
		GROUP = LIST.ReadLine 
55.
		Set DOMAENE = GetObject("LDAP://blablablubb") 
56.
		ANZ = 0 
57.
		ARRMEMBEROF = DOMAENE.GetEx("member") 
58.
		If (Err.Number = 0) Then  
59.
			ANZ  = UBound(ARRMEMBEROF) + 1  
60.
		End If 
61.
		On Error GoTo 0 
62.
		If (ANZ >= 1) then 
63.
			RESULT.WriteLine(GROUP & ";" & ANZ) 
64.
		Else 
65.
			RESULT.WriteLine(GROUP & ";0") 
66.
		End If 
67.
	Loop 
68.
	Set LIST = Nothing 
69.
End If 
70.
 
71.
RESULT.WriteLine("+++ENDE USERGRUPPEN+++") 
72.
 
73.
Set LIST = Nothing 
74.
Set RESULT = Nothing 
75.
Set FSO = Nothing 
76.
Set DOMAENE = Nothing
So weit so gut, mit der Funktion GetEx() klappt das auch. Allerdings muss ich nun die deaktivierten Benutzer aus den Gruppen von der Anzahl subtrahieren, bzw. gar nicht erst berücksichtigen.
Wie man einen Benutzer deaktivieren kann, habe ich mir schon angesehen, nur leider habe ich keine Antwort auf meine Frage gefunden.

Hat jemand eine Idee? Gerne mit Beispiel anhand des obigen Quellcodes.


Gruß
Simon
Mitglied: TsukiSan
23.11.2009 um 08:54 Uhr
nur leider habe ich keine Antwort auf meine Frage gefunden.

Hat jemand eine Idee?

Ist das die Frage?
Bitte warten ..
Mitglied: DemseinAdmin
23.11.2009 um 09:05 Uhr
Nein, die Frage ist: Wie vermehren sich kernlose Orangen?
Bitte warten ..
Mitglied: bastla
23.11.2009 um 09:23 Uhr
Hallo DemseinAdmin und TsukiSan!

Nachdem Ihr die Frage, was die Frage ist, geklärt habt, könntet Ihr das folgende Stück Code testen:
01.
Set DOMAENE = GetObject("LDAP://blablablubb") 
02.
ARRMEMBEROF = DOMAENE.GetEx("member") 
03.
ANZ = 0 
04.
For i = 0 To UBound(ARRMEMBEROF) 
05.
    Set User = GetObject("LDAP://" & ARRMEMBEROF(i)) 
06.
    If Not User.AccountDisabled Then 
07.
        ANZ = ANZ + 1 
08.
        'WScript.Echo User.sAMAccountName 
09.
    End If 
10.
Next 
11.
WScript.Echo ANZ
Grüße
bastla
Bitte warten ..
Mitglied: DemseinAdmin
23.11.2009 um 10:19 Uhr
Hallo bastla,

das schaut schon sehr gut aus! Vielen Dank erst einmal.
Ich konnte folgenden Code nur kurz antesten, da mir grade die Zeit fehlt:

01.
If FSO.FileExists(SOURCEFILE) Then 
02.
	Set LIST = FSO.OpenTextFile(SOURCEFILE, 1) 
03.
	Do While Not (LIST.AtEndOfStream) 
04.
		On Error Resume Next 
05.
		GROUP = LIST.ReadLine 
06.
		Set DOMAENE = GetObject("LDAP://blabla) 
07.
		ANZ = 0 
08.
		ARRMEMBEROF = DOMAENE.GetEx("member") 
09.
		If (Err.Number = 0) Then 
10.
			For i = 0 to UBound(ARRMEMBEROF) 
11.
				Set USER = GetObject("LDAP://blabla CN=" & ARRMEMBEROF(i)) 
12.
				If Not USER.AccountDisabled Then 
13.
					ANZ = ANZ + 1 
14.
				End If 
15.
			Next 
16.
		End If 
17.
		On Error GoTo 0 
18.
		If (ANZ >= 1) then 
19.
			RESULT.WriteLine(GROUP & ";" & ANZ) 
20.
		Else 
21.
			RESULT.WriteLine(GROUP & ";0") 
22.
		End If 
23.
	Loop 
24.
	Set LIST = Nothing 
25.
End If
Allerdings spuckt er mir eine maximale Anzahl von einem Benutzer aus. Also entweder 0 oder 1, obwohl es z.B. 1500 Benutzer wären. Wahrscheinlich habe ich irgendwo einen flüchtigen Fehler gemacht, aber melde mich morgen noch mal dazu, falls ich nicht fündig geworden bin.

Vielen Dank soweit!

Gruß
Simon
Bitte warten ..
Mitglied: TsukiSan
24.11.2009 um 02:39 Uhr
Hallo DemseinAdmin,

das ist erklärbar.

in Zeile 3 startest du eine While Do - Schleife und in Zeile 7 setzt du permanent die Variable "Anz" auf NULL.
Setze besser Anz vor die Zeile 3, so ähnlich, wie bastla es schon in seinem Codeschnippsel getan hat.
Dann müsstest du über die EINS hinauskommen.

Gruss
Tsuki
Bitte warten ..
Mitglied: DemseinAdmin
24.11.2009 um 08:28 Uhr
Moin, moin,

naja das ist nicht ganz richtig, denn wenn ich die Anzahl nicht in der Schleife auf NULL setze, zählt er die Mitglieder gruppenübergreifend hoch.
Jede Zeile dich ich einlese, steht ja für eine Gruppe.

Gruß
Simon
Bitte warten ..
Mitglied: DemseinAdmin
24.11.2009 um 08:47 Uhr
Ja gut, es war natürlich wieder was total simples:

Option Explixit und das Verwenden einer undeklarierten Variable ( For i = 0 to....) verträgt sich nicht so gut
Aufgrund des "On Error Resume Next" gab es leider auch keine Fehlermeldung.

Jetzt noch eine Sache:
Kann man, ähnlich der Abfrage auf deaktiviert oder nicht, auch noch eine If-Anweisung einfügen, welche prüft, ob das Objekt ein Benutzer oder eine Gruppe ist?
Gruppen sollten nicht mitgezählt werden.


Gruß
Simon
Bitte warten ..
Mitglied: TsukiSan
24.11.2009 um 09:03 Uhr
eventuell mit
01.
If Not USER.AccountDisabled and not user.Name then
Bitte warten ..
Mitglied: DemseinAdmin
24.11.2009 um 10:46 Uhr
Hm ne, das klappt nicht so ganz. Hast du es getestet?
Nicht das es bei mir noch an einem anderen Punkt scheitert.
Bitte warten ..
Mitglied: DemseinAdmin
24.11.2009 um 12:04 Uhr
Ich habe es jetzt so gelöst:

01.
OBJCAT = USER.objectCategory 
02.
BOLGROUP = InStr(1, OBJCAT, "CN=Group", 1) 
03.
'Nur zaehlen, wenn das Objekt keine Gruppe ist 
04.
If (BOLGROUP = "0") Then 
05.
'Nur zaehlen, wenn der Account nicht deaktiviert ist 
06.
   If Not (USER.AccountDisabled) Then 
07.
      ANZ = ANZ + 1 
08.
   End If 
09.
End If
Vielen Dank an alle, für die Hilfe.

Gruß
Simon
Bitte warten ..
Ähnliche Inhalte
VB for Applications
VBS - Vor- und Nachnamen auslesen
Frage von Ah3n0bar6usVB for Applications2 Kommentare

Ich könnte noch einmal (teuren) Rat gebracuhen. Ich versuche mir dem u.a. Script den kompletten Namen eines Nutzers vom ...

Batch & Shell
Eventlog Druckjobs mit VBS auslesen
Frage von joni2000deBatch & Shell4 Kommentare

Hallo zusammen, ich lese mit folgendem Code das Eventlog aus um die Druckjobs zu ermitteln. Das funktioniert auf dem ...

Entwicklung
Zählerstände über SNMP und VBS auslesen
Frage von motofuzyEntwicklung4 Kommentare

Hallo ihr lieben, ich suche ein Script das in VBS oder Powershell geschrieben ist und mir die Zählerstände der ...

VB for Applications
CSV Datei mit VBS auslesen
Frage von scorpionesc83VB for Applications4 Kommentare

Hallo zusammen, ich bin in Sachen VBS ein totaler Anfänger und hoffe, dass ihr mir bei einem Problem helfen ...

Neue Wissensbeiträge
Windows 10

Autsch: Microsoft bündelt Windows 10 mit unsicherer Passwort-Manager-App

Tipp von kgborn vor 8 StundenWindows 101 Kommentar

Unter Microsofts Windows 10 haben Endbenutzer keine Kontrolle mehr, was Microsoft an Apps auf dem Betriebssystem installiert (die Windows ...

Sicherheits-Tools

Achtung: Sicherheitslücke im FortiClient VPN-Client

Tipp von kgborn vor 9 StundenSicherheits-Tools

Ich weiß nicht, wie häufig die NextGeneration Endpoint Protection-Lösung von Fortinet in deutschen Unternehmen eingesetzt wird. An dieser Stelle ...

Internet

USA: Die FCC schaff die Netzneutralität ab

Information von Frank vor 1 TagInternet3 Kommentare

Jetzt beschädigt US-Präsident Donald Trump auch noch das Internet. Der neu eingesetzte FCC-Chef Ajit Pai ist bekannter Gegner einer ...

DSL, VDSL

ALL-BM200VDSL2V - Neues VDSL-Modem mit Vectoring von Allnet

Information von Lochkartenstanzer vor 1 TagDSL, VDSL2 Kommentare

Moin, Falls jemand eine Alternative zu dem draytek sucht: Gruß lks

Heiß diskutierte Inhalte
TK-Netze & Geräte
VPN-fähige IP-Telefone
Frage von the-buccaneerTK-Netze & Geräte16 Kommentare

Hi! Weiss noch jemand ein VPN-fähiges IP-Telefon mit dem man z.B. einen Heimarbeitsplatz gesichert anbinden könnte? Habe nur einen ...

Hardware
Links klick bei Maus funktioniert nicht
gelöst Frage von Pablu23Hardware16 Kommentare

Hallo erstmal. Ich habe ein Problem mit meiner relativ alten maus jedoch denke ich nicht das es an der ...

Windows Server
Anmeldung direkt am DC nicht möglich
Frage von ThomasGrWindows Server16 Kommentare

Hallo, ich habe bei unserem Server 2016 Standard ein Problem. Keine Ahnung wie das auf einmal passiert ist. Ich ...

Windows Server
KMS Facts for Client configuration
Frage von winlinWindows Server12 Kommentare

Hey Leute, wir haben in unserem Netz nun einen neuen KMS Server. Haben Bestands-VMs die noch nicht aktiviert sind. ...