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

Eingelese Objekte überprüfen in VBScript

Frage Entwicklung VB for Applications

Mitglied: Wolfroc

Wolfroc (Level 1) - Jetzt verbinden

30.07.2007, aktualisiert 06.08.2007, 4163 Aufrufe, 1 Kommentar

Hallo,

vorweg möchte ich erwähnen, das ich noch ein Anfänger bin was Scripting betrifft. Ich muss ein Script schreiben welches bei allen Benutzern in der Domäne das Feld "Company" füllt. In den Grundzügen habe ich das Script auch bereits fertig, nur ergeben sich für mich 2 abschliessende Probleme: Mein Script nimmt alle Objekte (Benutzer als auch Gruppen) und versucht das Feld Company zu befüllen es soll aber nur die Benutzer "anfassen" und mein 2. Problem ist, wie kann ich das Script so umbauen, dass es wahllos alle OUs auf dem Server durchsucht und nicht nur die Standard OU "Users"?
Um nur die Benutzer anzufassen, habe ich mir überlegt eine If-Bedingung in die FOR-Schleife einzubauen, allerdings weiß ich nicht wie ich überprüfen kann ob das momentane Objekt ein User ist.

So sieht mein Script bisher aus:

Code
On Error Resume Next

Const vCompany = "MusterCompany"*
Set objRootLDAP = GetObject("LDAP://rootDSE")
strDNSDomain = objRootLDAP.Get("defaultNamingContext")
Set objContainer = GetObject("LDAP://cn=Users," & strDNSDomain)
Set ou = GetObject ("LDAP://test.test.de/CN=Users, dc=test, dc=test, dc=de")

For Each obj In ou

If obj
obj.Put "company", vCompany
obj.SetInfo
WScript.Echo obj.samAccountName & VbCrLf & obj.company
*

Next
Code

*) Handelt sich an der Stelle nur um ein Beispiel.
) Das Script läuft momentan noch auf einer Testdomäne, daher auch der komische LDAP-Pfad.
*) Das WScript ist zu Debugg-Zwecken drin.

Vielen Dank an alle die Antworten!

Mit freundlichen Grüßen

Wolfi
Mitglied: bastla
06.08.2007 um 13:14 Uhr
Hallo Wolfroc!

Ein Beispiel, wie alle OU rekursiv nach Usern abgegrast werden können, findest Du zB hier: http://www.codeproject.com/useritems/Disable_Stale_AD_Users.asp (siehe Functions "EnumOUs" und "EnumUsers").

Alternativ dazu könntest Du folgende Vorgangsweise versuchen: Zunächst eine Abfrage mit entsprechendem Filter, um für die User DN und sAMAccountName zu erhalten, und dann jedes passende User-Objekt (im Beispiel unten werden Computerkonten, die OU "Users" und 2 einzelne User ausgespart) einzeln aufrufen:
01.
Const vCompany = "MusterCompany" 
02.
 
03.
Set adoConnection = CreateObject("ADODB.Connection") 
04.
Set adoCommand = CreateObject("ADODB.Command") 
05.
adoConnection.Provider = "ADsDSOOBject" 
06.
adoConnection.Open "Active Directory Provider" 
07.
Set adoCommand.ActiveConnection = adoConnection 
08.
 
09.
Set objRootDSE = GetObject("LDAP://RootDSE") 
10.
strDNSDomain = objRootDSE.Get("DefaultNamingContext") 
11.
'Abfrage auf User beschränken ... 
12.
strFilter = "(objectClass=user)" 
13.
'... und gewünschte Felder festlegen (sowie "subtree" für alle (Unter-)OU) 
14.
strQuery = "<LDAP://" & strDNSDomain & ">;" & strFilter _ 
15.
    & ";distinguishedName,sAMAccountName;subtree" 
16.
adoCommand.CommandText = strQuery 
17.
'Abfrage ausführen 
18.
Set adoRecordset = adoCommand.Execute 
19.
 
20.
Do Until adoRecordset.EOF 
21.
	'Keine Computerkonten ändern 
22.
	If Right(adoRecordSet.Fields("sAMAccountName"), 1) <> "$" Then 
23.
 
24.
		'Konten in OU Users nicht ändern 
25.
		If InStr(adoRecordSet.Fields("distinguishedName"), "CN=Users") = 0 Then 
26.
 
27.
			'Bestimmte User aussparen 
28.
			Select Case LCase(adoRecordSet.Fields("sAMAccountName")) 
29.
 
30.
			'Folgende Konten (Anmeldenamen in Kleinbuchstaben) nicht ändern 
31.
			Case "test01", "test02" 
32.
				'hier keine Aktion durchführen 
33.
 
34.
			'Änderung für alle übrigen Konten durchführen 
35.
			Case Else 
36.
				Set obj = GetObject("LDAP://test.test.de/" & _ 
37.
					adoRecordSet.Fields("distinguishedName")) 
38.
				obj.Put "company", vCompany 
39.
				obj.SetInfo 
40.
				WScript.Echo obj.samAccountName & VbCrLf & obj.company 
41.
			End Select 
42.
 
43.
		End If 
44.
 
45.
	End If 
46.
    adoRecordSet.MoveNext 
47.
Loop
Noch ein Selektionsbeispiel: Um (zB beim Testen) nur alle User aus einer bestimmten OU und deren Unter-OUs zu erhalten, könntest Du folgende Bedingung verwenden:
01.
If InStr(adoRecordSet.Fields("distinguishedName"), "OU=TestOU") <> 0 Then
Grüße
bastla
Bitte warten ..
Ähnliche Inhalte
VB for Applications
Vbscript zum überprüfen der exe Version wenn.dann
Frage von aletriVB for Applications9 Kommentare

Hallo Leute Script funktioniert wenn niedrigere Version der exe vorhanden ist. Ist jedoch der Pfad C:\Program Files (x86)\12bPilot\SODE\SimObjectDisplayEngine.exe nicht ...

Windows 7
Netzwerkanmeldeinformationen überprüfen
Frage von HenereWindows 76 Kommentare

Hallo zusammen, auf einem meiner Laptops (Win7) kommt seit heute früh diese Meldung: Der Laptop ist in einem AD, ...

VB for Applications
VBScript und OR
gelöst Frage von InvisanVB for Applications5 Kommentare

Hi zusammen, derzeit bastel ich ein bisschen in VBScript rum. Leider habe ich mit dem OR Operator einige Probleme. ...

Microsoft Office
Outlook VBScript
gelöst Frage von NebellichtMicrosoft Office5 Kommentare

Hallo, seit ein paar Wochen werden keine VBScripte hinter den (Benutzerspezifschen) Outlook Formularen ausgeführt. Hat jemand eine Lösung parat ...

Neue Wissensbeiträge
Datenschutz

Weitere Inforamtionen zum Sicherheitsproblem BeA

Information von Penny.Cilin vor 2 StundenDatenschutz

Im folgenden ein weiterer Bericht über die Sicherheitsprobleme von Bea. Fataler Konstruktionsfehler im besonderen elektronischen Anwaltspostfach Gruss Penny

Windows 10

Systemdienste behalten nach Win10 inplace-Upgrade nicht die ggf. modifizierte Startart bei

Tipp von DerWoWusste vor 3 StundenWindows 103 Kommentare

Stellt Euch vor, Ihr habt ein Win10 System und modifiziert dort die Startart von Systemdiensten. Zum Beispiel wollt Ihr ...

Microsoft Office

Deaktivieren von Startbildschirm und Backstage-Ansicht in Office 2016 per Batch-Datei

Anleitung von SarekHL vor 6 StundenMicrosoft Office17 Kommentare

Guten Morgen zusammen! Ich habe mir gestern (auch mit Hilfe dieses Boards) ein Script gebastelt, um in Office 2016 ...

Erkennung und -Abwehr

Sicherheitslücke Spectre und Meltdown: Status prüfen

Anleitung von Frank vor 12 StundenErkennung und -Abwehr2 Kommentare

Nach all den Updates der letzten Woche sollte man unbedingt auch den Status prüfen, ob die Sicherheitslücken Spectre, Meltdown ...

Heiß diskutierte Inhalte
Netzwerke
NTFS-Berechtigung
Frage von Daoudi1973Netzwerke23 Kommentare

Hallo zusammen und frohes neues Jahr (Sorry, ich bin spät dran) Meine Frage: 1- Ich habe einen Ordner im ...

Microsoft Office
Deaktivieren von Startbildschirm und Backstage-Ansicht in Office 2016 per Batch-Datei
Anleitung von SarekHLMicrosoft Office17 Kommentare

Guten Morgen zusammen! Ich habe mir gestern (auch mit Hilfe dieses Boards) ein Script gebastelt, um in Office 2016 ...

Drucker und Scanner
Gesucht DIN A3 Drucker
Frage von NebellichtDrucker und Scanner15 Kommentare

Hallo, ich möchte einen neuen DIN A3 Drucker kaufen. Um ab und zu, ca. 1 mal die Woche Farbausdrucke ...

Batch & Shell
AD-Abfrage in Batchdatei und Ergebnis als Variable verarbeiten
Frage von Winfried-HHBatch & Shell14 Kommentare

Hallo in die Runde! Ich habe eine Ergänzungsfrage zu einem alten Thread von mir. Ausgangslage ist die Batchdatei, die ...