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

Powershell Script um aus einer CSV Datei AD-User anzulegen, bzw. zu löschen

Frage Microsoft Windows Server

Mitglied: Firepower

Firepower (Level 1) - Jetzt verbinden

08.05.2010 um 13:20 Uhr, 10580 Aufrufe, 2 Kommentare

Hallo liebe Leute,

ich steh mal wieder auf dem Schlauch und komme nicht weiter.
Folgendes Problem:

Ich arbeite mit Powershell und soll im AD User anlegen bzw. löschen.

Kopf der CSV Datei:
01.
auftrag,sAMAccountName,cn,FirstName,LastName,Password
Da drin stehen dann zB. folgende Zeilen:
01.
anlegen,k.muster,Klaus Muster,Klaus,Muster,P@ssw0rd 
02.
anlegen,h.master,Heiko Master,Heiko,Master,P@ssw0rd 
03.
delete,john.woods,,, 
04.
delete,kim.ankers,,,
Folgendes hab ich schon realisiert:
01.
$objOU=[ADSI]"LDAP://OU=FIRMA,DC=domain,DC=local" 
02.
 
03.
$dataSource=import-csv "liste.csv" 
04.
foreach($dataRecord in $dataSource) { 
05.
	$auftrag=$dataRecord.auftrag 
06.
 
07.
if ($auftrag="anlegen") { 
08.
	#map variables to data source 
09.
	$sAMAccountName=$dataRecord.sAMAccountName 
10.
	$cn=$dataRecord.cn 
11.
	$givenName=$dataRecord.FirstName 
12.
	$sn=$dataRecord.LastName 
13.
	$displayName=$sn+", "+$givenName 
14.
	$userPrincipalName=$givenName + "." + $sn + "@domain.local" 
15.
	$password=$dataRecord.Password 
16.
 
17.
    Write-Output "User angelegt:" 
18.
    Write-Output $dataRecord 
19.
    Write-Output "------------------" 
20.
 
21.
 
22.
	#create the user object 
23.
		$objUser=$objOU.Create("user","CN="+$cn) 
24.
		$objUser.Put("sAMAccountName",$sAMAccountName) 
25.
		$objUser.Put("userPrincipalName",$userPrincipalName)  
26.
		$objUser.Put("displayName",$displayName) 
27.
		$objUser.Put("givenName",$givenName) 
28.
		$objUser.Put("sn",$sn) 
29.
		$objUser.SetInfo() 
30.
		$objUser.SetPassword($password) 
31.
		$objUser.psbase.InvokeSet("AccountDisabled",$false) 
32.
		$objUser.SetInfo() 
33.
 
34.
35.
if ($auftrag="delete") { 
36.
              	$sAMAccountName=$dataRecord.sAMAccountName 
37.
		Write-Output "Deletet" 
38.
                $ou.Delete(„user“,“cn=$sAMAccountName“) 
39.
 
40.
41.
42.
 
Jeder Teil für sich arbeitet wunderbar, also wenn nur User zum anlegen sind, dann werden die angelegt.

Leider arbeitet das Script beide Scheifen unabhängig davon ab, was als Auftrag angegeben wurde.

Wie kann ich das regeln, dass auch wirklich nur die User angelegt werden, welche als Auftrag das "anlegen" haben
und bei den Usern die gelöscht werden sollen, dass die nicht mit Fehlermeldung, nicht angelegt werden, aber dann gelöscht werden. ?!?!

Kann mir da jemand weiterhelfen?

Viele Grüße und ein schönes Weekend
Firepower
Mitglied: LotPings
08.05.2010 um 14:07 Uhr
Hallo,

ersetze mal testhalber das Gleicheitszeichen in deinen If-Statements mit " -eq "
Oder nimm den hier IMO besser passenden Switch-Befehl.
Gruß
LotPings
Bitte warten ..
Mitglied: Firepower
08.05.2010 um 16:12 Uhr
Hallo,

vielen Dank für den richtigen "Tritt".
Manchmal sieht man den Wald vor lauter Bäumen nicht !

Hab es jetzt so geregelt:
01.
$objOU=[ADSI]"LDAP://OU=FIRMA,DC=domain,DC=local" 
02.
 
03.
$dataSource=import-csv "liste.csv" 
04.
foreach($dataRecord in $dataSource) { 
05.
	$auftrag=$dataRecord.auftrag 
06.
 
07.
	switch ($auftrag){ 
08.
 
09.
		delete { 
10.
		$sAMAccountName=$dataRecord.sAMAccountName 
11.
		$ou.Delete("user","cn=$sAMAccountName") 
12.
		Write-Output "Deletet"  
13.
		Write-Output $dataRecord 
14.
		Write-Output "------------------"} 
15.
	 
16.
		anlegen { 
17.
		#map variables to data source 
18.
		$cn=$dataRecord.cn 
19.
		$sAMAccountName=$dataRecord.sAMAccountName 
20.
		$givenName=$dataRecord.FirstName 
21.
		$sn=$dataRecord.LastName 
22.
		$displayName=$sn+", "+$givenName 
23.
		$userPrincipalName=$givenName + "." + $sn + "@domain.local" 
24.
		$password=$dataRecord.Password 
25.
 
26.
		    Write-Output "User angelegt:" 
27.
		    Write-Output $dataRecord 
28.
		    Write-Output "------------------" 
29.
 
30.
 
31.
		#create the user object 
32.
			$objUser=$objOU.Create("user","CN="+$cn) 
33.
			$objUser.Put("sAMAccountName",$sAMAccountName) 
34.
			$objUser.Put("userPrincipalName",$userPrincipalName)  
35.
			$objUser.Put("displayName",$displayName) 
36.
			$objUser.Put("givenName",$givenName) 
37.
			$objUser.Put("sn",$sn) 
38.
			$objUser.SetInfo() 
39.
			$objUser.SetPassword($password) 
40.
			$objUser.psbase.InvokeSet("AccountDisabled",$false) 
41.
			$objUser.SetInfo() 
42.
 
43.
44.
45.
}
Das löschen funktioniert nun komischerweise nicht, aber da guck ich nochmal.
Erstmal vielen Dank !!

Schönes Wochenende noch.

Firepower


Edit fiel noch ein:

Hab es dann doch hinbekommen:
erst mit
01.
import-module activedirectory
Die AD-Module nachinstalliert und dann mit
01.
switch ($auftrag){ 
02.
 
03.
		delete { 
04.
			$sAMAccountName=$dataRecord.sAMAccountName 
05.
			Remove-ADUser $sAMAccountName -Confirm:$False 
06.
 
07.
			Write-Output "Deletet"  
08.
			Write-Output $dataRecord 
09.
			Write-Output "------------------"}
darauf zugegriffen. Hat super geklappt.

Jetzt noch eine Abfrage ob der User auch existiert, ansonsten Meldung, dann bin ich fertig !


Danke nochmal
Firepower
Bitte warten ..
Neuester Wissensbeitrag
Humor (lol)

Linkliste für Adventskalender

(3)

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

Ähnliche Inhalte
Windows Server
gelöst Wie AD User sauber löschen? (34)

Frage von McLion zum Thema Windows Server ...

Batch & Shell
gelöst AD-Felder für User mittels Powershell befüllen aus CSV-Datei (2)

Frage von Alex94G zum Thema Batch & Shell ...

Batch & Shell
Mehrere AD Benutzer aus CSV Datei mit PowerShell erstellen (1)

Frage von windelterrorist zum Thema Batch & Shell ...

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

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 ...

Windows 7
Verteillösung für IT-Raum benötigt (12)

Frage von TheM-Man zum Thema Windows 7 ...