kabadeluxe
Goto Top

Von eine Excelliste ins AD importieren

Hallo Leute

Sorry, wenn ich nochmal Frage.

Ich habe Folgendes Problem, ich muss von einer Excel liste User ins AD Importieren.


Und zwar schaut die Excel List so aus Von 1 bis XXXX stehen die Verschiedenen User und in den Spalten sind


B: CN Beispiel: Musterman Manfred

C: Last Name Beispiel: Musterman

D: First Name Beispiel: Manfred

E: SamAccountName Beispiel: MUSMA

F: Email Beispiel: Manfred.Mustermann@Musterfirma.com

G: Telefone Beispiel: +41 56 001 01 01

H: WebPage Beispiel: www.Musterpage.xo

I:Addr1 Beispiel: Musterstr. 23

J:City Beispiel:Musterdorf

K: ZipCode Beispiel: 0456

L:State Beispiel:Musterkanton

M:Manager Beispiel: (LEER)

N:Company Beispiel: Mustermann / Musterfirma AG

O:Titl Beispiel: Muster und Helpdesk-Support

P: Descript Beispiel: (LEER)

Q: Profile Beispiel: (LEER)

R: Asspath Beispiel: LDAP://CN=Musterman Manfred,OU=Win7,OU=LDUsers,DC=corp,DC=limmatFirma,DC=ch

S: Primary SMTP Beispiel: Zusatemail@HansMuster.com


Kann mir da jemand Helfen die wieder in AD zu importieren. Ich habe echt die User nur noch in der Excel liste und sonst Nirgendwo mehr.


DANKE schon mal für eure Mithilfe

Content-ID: 202557

Url: https://administrator.de/contentid/202557

Ausgedruckt am: 19.11.2024 um 13:11 Uhr

killtec
killtec 28.02.2013 aktualisiert um 15:33:40 Uhr
Goto Top
Hi,
du kannst das ganze per VB-Script machen. Es gibt da auch fertige Beispiele.
Ein Auszug mit nicht allen Funktionen wäre hier (mit dieser Datei habe ich das bei uns gemacht). Du musst nur die Domainname und TLD anpassen.
Die Excelliste speicherst du vorher als csv-Datei ab.

===
'Benutzername;OU;Gruppe;Passwort  
'Option Explicit  
Dim FSO, DateiInhalt, Zeile, Inhalt
Dim Container, Benutzer, ou, gruppe, pass, benutzername, gruppenname, group
Dim pool, poolnumb, poolsmalletter, poolbigletter, poolchar, password, Vorname, Nachname, Vordisp, Nachdisp
Dim Zieldatei, Zieldatei1, pwd, pwd1, pwd2, pwd3, pwd4, i, output, outputuser, Zieldatei_usr
poolnumb="1234567890"  
poolsmalletter="abcdefghijklmnopqrstuvwxyzöäü"  
poolbigletter=UCase(poolsmalletter)
poolchar="!§$%&/()=\ß?^°+-.:*'#;,<>|"&chr(34)  

pool=poolnumb & poolsmalletter & poolbigletter & poolchar
randomize

Const Dateiname="importfile.csv"  

Set FSO = CreateObject("Scripting.FileSystemObject")  
Set Zieldatei = FSO.CreateTextFile("_output.txt")  
If FSO.FileExists(Dateiname) Then
    Set DateiInhalt = FSO.OpenTextFile(Dateiname)
    
    Do Until DateiInhalt.atEndOfStream
        Zeile = DateiInhalt.ReadLine

        'zeile spitten  
        dim benutzerangaben 
        benutzerangaben = split(zeile, ";")  
		if not zeile = "Kost.st.;Name;Vorname;" then  
		
		Vorname = benutzerangaben(2)
        Nachname = benutzerangaben(1)
        ou = benutzerangaben(0)
		abteil = split(benutzerangaben(0), ",")  
		abt = lcase(abteil(0))
		Vordisp = Vorname
		Nachdisp = Nachname
		'msgbox ou  
		
		Vorname = Replace(Replace(Replace(Replace(Replace(Vorname, "ä", "ae"), "ö", "oe"), "ü", "ue"), "ß", "ss"), " ","")  
		benutzername = lcase(Vorname) & "."  & lcase(Nachname)  
		benutzername = Replace(Replace(Replace(Replace(Replace(benutzername, "ä", "ae"), "ö", "oe"), "ü", "ue"), "ß", "ss"), " ","")  
		'msgbox benutzername  
			do 
			  password = ""  
			  pwd1 = false
			  pwd2 = false
			  pwd3 = false
			  pwd4 = false
			  pwd = true
			  
			  
			  for i = 1 to 10
			  '                              String, Stelle, Anzahl Zeichen  
				password = password & mid(pool,Int(rnd*len(pool))+1,1)

			  next
			  
			  for i = 1 to Len(poolnumb)
				if not (InStr(password, Mid(poolnumb,i,1)) = 0) then
				  pwd1 = true
				  'msgbox "PWD1: " & pwd1  
				  exit for
				end if
			  next

			  for i = 1 to Len(poolsmalletter)
				if not (InStr(password, Mid(poolsmalletter,i,1)) = 0) then
					pwd2 = true
					'msgbox "PWD2: " & pwd2  
				  exit for
				end if
			  next

			  for i = 1 to Len(poolbigletter)
				if not (InStr(password, Mid(poolbigletter,i,1)) = 0) then
				  pwd3 = true
				  'msgbox "PWD3: " & pwd3  
				  exit for
				end if
			  next

			  for i = 1 to Len(poolchar)
				if not (InStr(password, Mid(poolchar,i,1)) = 0) then
				  pwd4 = true
				  'msgbox "PWD4: " & pwd4  
				  exit for
				end if
			  next
			  
			  if ((pwd1 = false) or (pwd2 = false) or (pwd3 = false) or (pwd4 = false)) then
				pwd = false
			  end if
				if pwd = false then
					'msgbox "false"  
				else
					'msgbox "true"  
				end if
			loop while pwd = false

		pass = password	
Zieldatei.WriteLine(password)
        
		'benutzername = benutzerangaben(0)  
        'ou = benutzerangaben(1)  
        'gruppenname = benutzerangaben(2)  
        'pass = benutzerangaben(3)  
		'msgbox benutzername  
		Set Container = GetObject("LDAP://10.0.0.1/OU=" & ou & ",DC=<domainname>,DC=<tld>")  
		'Set Container = GetObject("LDAP://10.0.0.1/OU=" & ou )  
		Set Benutzer = Container.Create("user", "CN=" & Nachname & "\, " & Vorname)   
		Benutzer.Put "sAMAccountName", benutzername  
		Benutzer.Put "displayName", Nachdisp & ", " & Vordisp  
		Benutzer.Put "name", Nachname & "," & Vorname  
		Benutzer.Put "givenName", Vorname  
		Benutzer.Put "sn", Nachname  
		Benutzer.Put "userPrincipalName", benutzername & "@<domainname>.<tld>"  
		Benutzer.SetInfo
		Benutzer.SetPassword(pass)
		Benutzer.Put "pwdLastSet", 0  
        Benutzer.SetInfo
		Benutzer.AccountDisabled = False
		Benutzer.Put "scriptPath", "logon_" & abt & ".bat"  
		Benutzer.SetInfo
		'msgbox abt  
		
		'msgbox "LDAP://10.0.0.1/OU=" & ou & ",DC=<domainname>,DC=<tld>"  
		output = Nachname & ", " &Vorname & ", Benutzer: " & benutzername & " | " & password  
		Zieldatei.WriteLine(output)
		'Zieldatei1.WriteLine("net user " & benutzername & " /activate:yes")  
		Set outputuser = FSO.CreateTextFile(benutzername & ".txt")  
		outputuser.WriteLine(output)
		outputuser.Close
		end if
    Loop
    Zieldatei.Close
	'Zieldatei1.close  
    DateiInhalt.Close
	
	' Bach-File aufrufen  
	Set WshShell = WScript.CreateObject("WScript.Shell")  
	
	' Datei, 1 für Vordergrund, true ist warten  
	test = WShShell.Run("copy.bat",1,true)  
	'test = WShShell.Run("users.bat",1,true)  
	
	'Set Zieldatei1 = FSO.GetFile("batch.txt")  
	'Zieldatei1.Delete  
    
else
  msgbox "Datei nicht gefunden!"  

End If
===

Die Benutzung erfolg auf eigenes Risiko. ;)

P.S.: Das ist mit Passwortgenerator. Das kannst du bzw. musst du ja auch anpassen, da du mehrere Felder hast.

Ich hoffe ich konnte dir hierbei helfen.

Gruß
110135
110135 28.02.2013 aktualisiert um 15:31:57 Uhr
Goto Top
Hallo,

wenn du die Powershell verwenden kannst, hätte ich ein kürzeres Beispiel:

userimporter.ps1

get-content ".\userlist.csv" | out-file -encoding utf8 ".\userlist2.csv"  
Import-Module ActiveDirectory 
$Users = Import-Csv -Delimiter ";" -Path ".\userlist2.csv"    
foreach ($User in $Users)  
{  
    $Passwort = $User.passwort 
    $vollerName = $User.vorname + " " + $User.nachname  
    
    New-ADUser -GivenName:$User.vorname -Title:$User.position -Department:$User.abteilung -Company:$User.firma -EmailAddress:$User.email -Surname:$User.nachname -DisplayName:$vollerName -Office:$User.buero -OfficePhone:$User.tel -HomePage:$User.homepage -StreetAddress:$User.strasse -City:$User.ort -Country:"DE" -PostalCode:$User.plz -Fax:$User.fax -Name:$vollerName -SamAccountName:$User.login -Type:"user" -AccountPassword (ConvertTo-SecureString $Passwort -AsPlainText -Force) -Enabled $true -Path:"OU=DEINE_OU,DC=NAME_DEINES_DCs,DC=local"  
    
} 

Habe damit damals ca. 200 User in das AD eingetragen.
Was noch angepasst werden müsste:
-Path:"OU=DEINE_OU,DC=NAME_DEINES_DCs,DC=local"  
Meine CSV-Datei war folgendermaßen aufgebaut:
vorname;nachname;buero;tel;homepage;strasse;ort;plz;fax;position;abteilung;email;Passwort;login;firma
Die erste Zeile des PowerShell-Scripts sorgt dafür, dass auch Umlaute in den Namen verwendet werden können.

Das Teil hier solltest du relativ leicht an deine Bedürfnisse anpassen können.

Gruß,
Florian
Pjordorf
Pjordorf 28.02.2013 um 15:15:12 Uhr
Goto Top
Hallo,

Zitat von @Kabadeluxe:
Ich habe Folgendes Problem, ich muss von einer Excel liste User ins AD Importieren.
Kann mir da jemand Helfen die wieder in AD zu importieren.

Ich habe echt die User nur noch in der Excel liste und sonst Nirgendwo mehr.
Wie kann das denn passieren?

Gruß,
Peter
Snowman25
Snowman25 28.02.2013 um 15:30:21 Uhr
Goto Top
@killtec und @110135,
Schreibt code bitte immer in -Tags!
Danke
110135
110135 28.02.2013 um 15:32:24 Uhr
Goto Top
Zitat von @Snowman25:
@killtec und @110135,
Schreibt code bitte immer in -Tags!
Danke

Tut mir leid face-sad Habe es angepasst face-smile
killtec
killtec 28.02.2013 aktualisiert um 15:34:22 Uhr
Goto Top
Hi Snowman25,
hab es auch angepasst. War mein erster code hier ;)
Kabadeluxe
Kabadeluxe 01.03.2013 um 08:25:59 Uhr
Goto Top
Es geht bei mir nicht.
Ich habe den Oberen Code von Killtec genommen und in eine VBS datei gemacht. Er bringt dann die Fehlermeldung:

Zeile: 34
Zeichen: 3
Fehler: Index Auserhalb des Gültigen Bereichs: '(number:0)´
Code: 800A0009
Quelle: Laufzeitfehler in Microsoft VBScript

Aber bevor ich es vergesse Schon mal ein Ganz herzliches Danken an euch allen

Gruss Thomas