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

per VB-Script pruefen ob eine OU vorhanden ist

Frage Microsoft Windows Server

Mitglied: Firepower

Firepower (Level 1) - Jetzt verbinden

11.06.2008, aktualisiert 12.06.2008, 6864 Aufrufe, 4 Kommentare

Hallo,

habe eine Frage bezüglich Scripting im AD.

Folgendes wollte ich ermöglichen:
Testumgebung:
Ich möchte eine bestimmte Anzahl an User in einer OU erstellen.

Das Script funktioniert auch in soweit, in folgenden Parametern:
input Anzahl User
input OUName

- Domänenname egal
01.
 ("LDAP://RootDSE") 
- wenn OU nicht vorhanden ist, wird diese erstellt
01.
 CREATE("organizationalUnit"; "ou=" & OUName) 
- Anzahl der User wird in dieser OU angelegt
01.
 for i = 1 to Anzahl 
02.
 
03.
CREATE("user", "CN=" & Uservar & ", OU=" & OUName) 
04.
Put "sAMAccountName", "Dummy" & i 
05.
 
06.
next
Soweit so gut.

Mein Problem besteht nun darin, dass, wenn die OU schon vorhanden ist,
bekomme ich eine Fehlermeldung: Object existiert.

Wenn ich den Fehler übergehe "On Error resume next", erstellt das script
nur neue User, wenn die Anzahl der neu anzulegenden User, die vorhandenen
übersteigt.

Hört sich doof an: Hier ein Beispiel:

Erster Scriptlauf: lege 10 User in OU Test an -> Erfolgreich
Zweiter Ablauf : lege 11 User in OU Test an -> 1 neuer User wird angelegt,
wenn On Error resume next
ansonsten wird mit Fehler abgebrochen.

Dritter Ablauf: lege 20 User in OU Test an -> 9 neue User, usw...

Hat jemand eine Idee wie ich das vorher abfragen kann?

Mit
- if not existsObject hatte ich keinen Erfolg, bzw. hab es nicht hinbekommen.



Hab irgendtwo nicht den Durchblick :D


Hier nochmal das komplette Script im Überblick:
01.
  
02.
On Error Resume Next 
03.
 
04.
dim rootDSE 
05.
set rootDSE = GetObject("LDAP://RootDSE") 
06.
domainname=rootDSE.Get("defaultnamingcontext") 
07.
 
08.
set domain = GetObject("LDAP://" & domainname) 
09.
 
10.
randomize 
11.
Zufallszahl = Int(1000 * rnd + 1) 
12.
 
13.
Anzahl = inputBox("Wie viele User sollen angelegt werden?") 
14.
ZielOU = inputBox("In welcher OU sollen die User angelegt werden?") 
15.
 
16.
Set objOU = domain.Create("organizationalUnit", "ou=" & ZielOU) 
17.
objOU.SetInfo 
18.
 
19.
For i = 1 To Anzahl 
20.
    MUsername = "Dummy" & Zufallszahl & "-" & i 
21.
    Set objLeaf = domain.Create("user", "CN=" & MUsername & ", OU=" & ZielOU) 
22.
    objLeaf.Put "sAMAccountName", "Dummy" & i 
23.
    objLeaf.SetInfo 
24.
Next 
25.
  
26.
WScript.Echo Anzahl & " Benutzer in " & ZielOU & " erstellt."

Danke schonmal im Voraus
Heiko
Mitglied: bastla
11.06.2008 um 21:32 Uhr
Hallo Firepower!

Lösung über Error-Handling: How to Create an OU (Organizational Unit) with VBScript

Ansonsten als Grundlage: Search for all the OUs with a Specific Word in Their Names

Grüße
bastla
Bitte warten ..
Mitglied: Firepower
11.06.2008 um 22:48 Uhr
Hallo,

vielen Dank. Das hilft mir schon mal weiter.

Aber ein Problem bleibt. Es werden trotzdem nur neue User erstellt,
wenn die Anzahl der schon vorhandenen User darunter liegt.

Nochmal zum veranschaulichen:
10 User erstellt -> Erfolgreich

Dann will ich 5 neue User anlegen, diese werden aber nicht angelegt.
Lege ich stattdessen 15 neue User an, werden 5 neue User angelegt.

Die Usernamen werden alle mit einer Zufallszahl zwischen 1 und 1000 erstellt,
also doppelte User kann ich ausschliessen.

Noch jemand dazu ne Idee ??

Grüße
Heiko
Bitte warten ..
Mitglied: Firepower
11.06.2008 um 23:00 Uhr
Hallo nochmal,

ich glaub das war heute zu lange.

Kaum macht man das richtig, gehts auch !! :D:D

Danke für die schnelle Hilfe

Grüße
Heiko
Bitte warten ..
Mitglied: Firepower
12.06.2008 um 11:39 Uhr
Hallo,
nach einer kurzen Nacht, hier das komplette Script.

Zwar nicht auf die feine Art gelöst, aber so dass es nun so funktioniert wie ich es haben wollte.
Die OU wird immer auf dem Rootlevel der AD erstellt, dabei ist es egal wie die Domäne heißt.

Mein Fehler war, dass bei der Anlage der sAMAccountnamen,
die Zufallszahl nicht mit geschrieben wurde, und daher wurden nur User angelegt
die nicht vorhanden waren.

Aber so geht es erstmal.


01.
On Error Resume Next 
02.
 
03.
dim rootDSE 
04.
 
05.
set rootDSE = GetObject("LDAP://RootDSE") 
06.
domainname=rootDSE.Get("defaultnamingcontext") 
07.
set domain = GetObject("LDAP://" & domainname) 
08.
 
09.
Anzahl = inputBox("Wie viele User sollen angelegt werden?") 
10.
UName = inputBox("Wie sollen die User heißen?") 
11.
ZielOU = inputBox("In welcher OU sollen die User angelegt werden?") 
12.
 
13.
Set objOU = domain.Create("organizationalUnit", "ou=" & ZielOU) 
14.
objOU.SetInfo 
15.
 
16.
randomize 
17.
Zufallszahl = Int(1000 * rnd + 1) 
18.
 
19.
  For i = 1 To Anzahl 
20.
    MUsername = UName & Zufallszahl & "-" & i 
21.
    Set objLeaf = domain.Create("user", "CN=" & MUsername & ", OU=" & ZielOU) 
22.
    objLeaf.Put "sAMAccountName", MUsername & Zufallszahl & "-"  & i 
23.
    objLeaf.SetInfo 
24.
  Next 
25.
 
26.
WScript.Echo Anzahl & " Benutzer in " & ZielOU & " erstellt."
Falls da noch jemand Verbesserungen machen will, kann er mir gerne Bescheid sagen.

Grüße
Heiko
Bitte warten ..
Neuester Wissensbeitrag
Humor (lol)

Linkliste für Adventskalender

(3)

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

Ähnliche Inhalte
Outlook & Mail
gelöst Email Anhänge speichern VB Script aber nur bestimmte Dateitypen (Outlook) (4)

Frage von LindeUnimog zum Thema Outlook & Mail ...

VB for Applications
gelöst VB Script rekursiv statt nur ein Ordner (4)

Frage von Saschaaaaa zum Thema VB for Applications ...

VB for Applications
gelöst VB Script nach gefundenem Wort die nächsten 4 Zeichen ersetzten (2)

Frage von deutsch73 zum Thema VB for Applications ...

Heiß diskutierte Inhalte
Windows Server
DHCP Server switchen (24)

Frage von M.Marz zum Thema Windows Server ...

SAN, NAS, DAS
gelöst HP-Proliant Microserver Betriebssystem (14)

Frage von Yannosch zum Thema SAN, NAS, DAS ...

Grafikkarten & Monitore
Win 10 Grafikkarte Crash von Software? (13)

Frage von Marabunta zum Thema Grafikkarten & Monitore ...

Erkennung und -Abwehr
Spam mit eigener Domain (12)

Frage von NoobOne zum Thema Erkennung und -Abwehr ...