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

Import von 500.000 Benutzer aus einer .csv ins ActiveDirectory

Frage Entwicklung

Mitglied: FaBMiN

FaBMiN (Level 2) - Jetzt verbinden

16.12.2008, aktualisiert 17.12.2008, 9043 Aufrufe, 9 Kommentare

Performantere Methode gesucht.
Derzeit ca. 3000 Benutzer/Std.

Hat jemand eine performantere Methode zum Import von ca. 500.000 Benutzer aus einer .csv in eine ActiveDirectory OU?

01.
Dim fso, f, Zeile, Feld 
02.
Set fso = CreateObject("Scripting.FileSystemObject") 
03.
Set f = fso.OpenTextFile ("user.txt",1,0) 
04.
 
05.
Do while not f.AtEndOfLine 
06.
Zeile = f.readLine 
07.
Feld = split(Zeile,";") 
08.
Benutzer = Feld(0) 
09.
Vorname = Feld(1) 
10.
Nachname = Feld(2) 
11.
Passwort = Feld(3) 
12.
Call BenuntzerAnlegen(Benutzer,Vorname,Nachname,Passwort) 
13.
Loop 
14.
f.Close 
15.
Wscript.Quit(0) 
16.
 
17.
Sub BenuntzerAnlegen(Benutzer,Vorname,Nachname,Passwort) 
18.
Dim ouo, b 
19.
Set ouo = GetObject("LDAP://OU=Benutzer,DC=evaluation,DC=procon,DC=local") 
20.
Set b = ouo.Create("user", "CN=" & Vorname & " " & Nachname) 
21.
Dim WshShell, ret 
22.
Set WshShell = WScript.CreateObject("WScript.Shell") 
23.
b.Put "sAMAccountName", Benutzer 
24.
b.Put "displayName", Vorname & " " & Nachname 
25.
b.Put "givenName", Vorname 
26.
b.Put "sn", Nachname 
27.
b.Put "userAccountControl", 66082 
28.
b.Put "userPrincipalName", Benutzer & "@evaluation.procon.local" 
29.
b.SetInfo 
30.
b.SetPassword Passwort 
31.
b.AccountDisabled = False 
32.
b.SetInfo 
33.
WScript.Sleep(1000) 
34.
End Sub
Mitglied: filippg
16.12.2008 um 23:15 Uhr
Hallo,

ob ich bin mir nicht sicher, ob mein Vorschlag wirklich performanter ist (zumindest nutzt er kein WSH). Aber du könntest dir mal ldifde und csvde anschauen. Beide kommen von MS und sollten in sofern taugen (und performant sein).

Definitiv würde ich dir empfehlen, die Datei zu "zersägen" und in tranchen zu importieren. Vielleicht erliegt man sonst doch einem "Schluckauf" der Speicherverwaltung, vor allem wird Fehlersuche wohl _deutlich_ einfacher.
Weitere positiver Effekt: Ich bin mir nicht sicher, wie die Replikation reagiert, wenn innerhalb kürzerster Zeit 500k Objekte erzeugt werden.

Gruß

Filipp


ach ja: einfachste Methode um deine Methode performanter zu machen dürfte sein das Sleep(1000) zu entfernen.
Bitte warten ..
Mitglied: Arch-Stanton
17.12.2008 um 00:06 Uhr
Da hast Du wohl das Komma ein wenig versetzt, oder?

Arbeitest Du für die Chinesische Volksarmee?

Gruß, Arch Stanton
Bitte warten ..
Mitglied: dog
17.12.2008 um 01:11 Uhr
Den genaueren Sinn hinter dem Sleep kann ich auch nicht erkennen, aber nachgerechnet:

1h=3600s

3000ds=3600s/(1s+x)
=> x=0,2

Anders gesagt: Ohne das Sleep würdest du pro Stunde ca. 18'000 DS schaffen und wärst in 28 Stunden durch.

Grüße

Max
Bitte warten ..
Mitglied: FaBMiN
17.12.2008 um 08:48 Uhr
ashahahaa :D
Danken Euch allen erstmal.

Also Speichertechnisch habe ich keine Probleme! Und den gleichen Datendurchsatz, als würde ich entweder .csv mit 1000 oder 65000 importieren...
Das Sleep braucht er, weil den account sonst nicht richtig aktiviert, habe ich festgestellt.

Ich konnte den Datendurchsatz mittlerweile auf 5000/Std. steigern --> fragt mich nicht warum ;)
Um meine eigentliche Frage nochmal anders zu stellen...Meine CPU und RAM auslastung liegen bei ca. 2%.
Ich würde dem Skript aber gerne 50% zur Verfügung stellen, dafür brauche ich aber ein performanteres Programm...
ich werds mal mit ldifde und csvde versuche...

Danke
Bitte warten ..
Mitglied: 64748
17.12.2008 um 10:34 Uhr
Hallo FaBMiN,

ich hab mal 500 Benutzer auf einmal angelegt.
Der Server ist ein altersschwacher w2k und ich habe mir mit Excel mit der Autofill-Funktion eine Batch-Datei angelegt und den "net user"-Befehl benutzt. (das geht natürlich bei 500000 Benutzern nicht, weil Excel soviel Daten nich verarbeiten kann).
Dabei habe ich auch festgestellt, dass es nach Ablauf des Batch-Programms eine ganze Weile dauert, bis die neuen Benutzer korrekt im AD angezeigt werden (die Zeitdauer weiß ich nicht mehr). Ich vermute, dass hier die Grenzen durch die Verarbeitungsgeschwindigkeit der Daten im AD vorgegeben werden.

Markus
Bitte warten ..
Mitglied: juergi69
17.12.2008 um 12:51 Uhr
Hallo,

ich arbeite gerade an so einem script, ist mit 300 benutzern schon getestet. (Batch mit dsadd, ob das performater ist???)
da es aber noch sehr "unschön" geschrieben ist möchte ich es hier im forum noch nicht posten.
wenn es dringend ist schreib mir ein mail an juergen@pilgram.at ich schick es dir dann zu mit den anmerkungen was du noch händisch anpassen mußt.

lg
jürgen
Bitte warten ..
Mitglied: 60730
17.12.2008 um 18:58 Uhr
Servus,

Das Sleep braucht er, weil den account sonst nicht richtig aktiviert, habe ich festgestellt.

ganz genau - und deshalb hat derjenige, der das Script ursprünglich geschrieben hat diesen "Sleep" auch dort plaziert.

Auch die "doppelten" Setinfos haben einen Grund.

Egal, wie deine CPU und RAM auslastung liegt.
Vergiss bitte nicht, daß du immer noch einen schreibenden Datenbankzugriff auf ein AD damit betreibst.
Das ist kein MYSQL oder Oracle Denk auch an die "Daten" die dabei erzeugt werden, obwohl du die nicht in dem Script explizit in Auftrag gibts. (SID usw.)

Klasse statt Masse - so nenne ich deine Art, die User anzulegen.
(fehlen da nicht ein paar Infos bei dem anlegen und *WTF* braucht 5.000 User innerhalb 50.000 oder 500.000 sekunden?)

Auch wenn es ein Script ist - immer daran denken, was es auslöst - löst viele Probleme, die eigentlich keine sind
Gruß
Bitte warten ..
Mitglied: Bitsqueezer
22.12.2008 um 15:13 Uhr
Hallo,

ich würde mal vermuten, daß Du eine Menge Zeit dadurch verschenkst, daß Du die Verbindung zum Active Directory bei jedem Durchlauf neu erzeugst (GetObject) anstatt die vorhandene Verbindung weiterzubenutzen. Also einmal zu Beginn "GetObject" durchführen, und dann den Loop über die "b."-Objekte durchführen.
Ich glaube nicht, daß das Sleep wirklich nötig ist, ich vermute einfach mal, daß es daran liegt, daß Du am Ende des Subs die Objekte nicht wieder freigibst. Damit muß sich VBScript selbst um das Freigeben kümmern, weswegen dann wohl auch das Sleep nötig ist. Wenn Du also am Ende hinzufügst:

Set b=Nothing
Set ouo = Nothing

Und dafür das Sleep wegläßt, sollte es eigentlich besser und schneller funktionieren. Hab's aber nicht getestet, ist nur eine Vermutung.

Wie gesagt, um die Performance dann noch mehr zu steigern, 1. Objekt erzeugen mit GetObject und dann den Rest des Programms durchlaufen lassen und als letzte Zeile mit Set ouo=Nothing erst das Objekt schließen und terminieren.

Viele Grüße

Christian
Bitte warten ..
Mitglied: 61801
23.12.2008 um 16:47 Uhr
mann könnte auch gleich das programm eUser verwenden ....
Google hilft

mfg
Bitte warten ..
Ähnliche Inhalte
VB for Applications
Import von csv Dateien
Frage von KurinoKiVB for Applications6 Kommentare

Hallo, ich verwende bereits folgendes Skript für den Import meiner csv Dateien. Bei dem Import sollten die Spalten A, ...

Datenbanken
Import CSV in MYSQL
gelöst Frage von schneerunzelDatenbanken3 Kommentare

Hallo zusammen, ich versuche gerade die Daten einer Vereinsverwaltung in eine neu zu überführen. Dabei tauchen einige Probleme auf. ...

Windows Tools
Import-module ActiveDirectory funktioniert unter Win8.1 nicht
gelöst Frage von MesserjockeWindows Tools3 Kommentare

Hallo da draußen, ich habe vor einiger Zeit zu Win7 Zeiten ein schönes Powershellskript geschrieben, mit dem ich Exchange2010-Benutzer ...

Datenbanken
MySQL Csv Datei Import
gelöst Frage von bytetixDatenbanken2 Kommentare

Hi zusammen, also vorab, ich bin eig. kein SQL progger, versuche mich aber gerade an einer eigentlich kleinen Sache. ...

Neue Wissensbeiträge
Batch & Shell

Open Object Rexx: Eine mittlerweile fast vergessene Skriptsprache aus dem Mainframebereich

Information von Penny.Cilin vor 1 TagBatch & Shell9 Kommentare

Ich kann mich noch sehr gut an diese Skriptsprache erinnern und nutze diese auch heute ab und an noch. ...

Humor (lol)

"gimme gimme gimme": Automatischer Test stolpert über Easter Egg im man-Tool

Information von Penny.Cilin vor 1 TagHumor (lol)6 Kommentare

Interessant, was man so alles als Easter Egg implementiert. Ist schon wieder Ostern? "gimme gimme gimme": Automatischer Test stolpert ...

MikroTik RouterOS

Mikrotik - Lets Encrypt Zertifikate mit MetaROUTER Instanz auf dem Router erzeugen

Anleitung von colinardo vor 1 TagMikroTik RouterOS8 Kommentare

Einleitung Folgende Anleitung ist aus der Lage heraus entstanden das ein Kunde auf seinem Mikrotik sein Hotspot Captive Portal ...

Sicherheit

Sicherheitslücke in HP-Druckern - Firmware-Updates stehen bereit

Information von BassFishFox vor 1 TagSicherheit1 Kommentar

Ein weiterer Grund, dass Drucker keinerlei Verbindung nach "auswaerts" haben sollen. Unter Verwendung spezieller Malware können Angreifer aus der ...

Heiß diskutierte Inhalte
Off Topic
Fachkräftemangel in Deutschland? - Talentschmiede schreibt alle 2 Tage die gleichen Stellen aus
Frage von Penny.CilinOff Topic12 Kommentare

Hallo, haben wir in Deutschland Fachkräftemangel? Die Talentschmiede schreibt gefühlt alle zwei Tage dieselben Stellen aus. Und das schon ...

Windows Server
Windows Store Apps
gelöst Frage von PeterleBWindows Server11 Kommentare

Gibt es einen Weg, auf Windows Server 2016 Windows Store Apps wie zum Beispiel die HP Smart App zu ...

Microsoft Office
Outlook Cache Mode Frage
Frage von GwaihirMicrosoft Office11 Kommentare

Hallo zusammen, bin gerade neu in der Firma und lerne hier einige neue Dinge kennen. Zum Beispiel, dass die ...

Microsoft
Erfahrungen mit Webcam over RDP gesucht
Frage von DerWoWussteMicrosoft10 Kommentare

Moin Kollegen. Bekanntlich kann man Webcams nur mit Drittanbietersoftware in RDP reinschleifen. Was nutzt Ihr dazu? Wie stabil funktioniert ...