Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

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

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, 10872 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 ..
Ähnliche Inhalte
Windows Server
gelöst PowerShell Inhalt einer csv Datei löschen (4)

Frage von makaroni zum Thema Windows Server ...

Batch & Shell
CSV zu XML Probleme mit PowerShell (7)

Frage von comtel zum Thema Batch & Shell ...

Batch & Shell
gelöst Auslesen und Vergleichen Zweiter CSV Dateien Powershell (7)

Frage von Hainoon zum Thema Batch & Shell ...

XML
gelöst Xml-Datei in eine csv-Datei umwandeln mit Powershell (5)

Frage von jan.kleinel zum Thema XML ...

Neue Wissensbeiträge
Viren und Trojaner

Neues Botnetz über IoT-Geräte

Information von certifiedit.net zum Thema Viren und Trojaner ...

Ubuntu

Ubuntu 17.10 steht zum Download bereit

(3)

Information von Frank zum Thema Ubuntu ...

Datenschutz

Autofahrer-Pranger - Bewertungsportal illegal

(8)

Information von BassFishFox zum Thema Datenschutz ...

Windows 10

Neues Win10 Funktionsupdate verbuggt RemoteApp

(8)

Information von thomasreischer zum Thema Windows 10 ...

Heiß diskutierte Inhalte
Router & Routing
Externe IP von innen erreichbar machen (15)

Frage von Windows10Gegner zum Thema Router & Routing ...

Windows Installation
Windows 10 neu installieren (12)

Frage von imebro zum Thema Windows Installation ...

Windows Server
Frage zu Server Rack (11)

Frage von rainergugus zum Thema Windows Server ...