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

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, 10946 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
PowerShell Inhalt einer csv Datei löschen
gelöst Frage von makaroniWindows Server4 Kommentare

Hallo zusammen, ich möchter gerne automatisiert über einen Task alle 10 Min eine CSV Datei via Powershell einlesen und ...

Batch & Shell
Powershell - Zeilen in einer csv löschen bis
Frage von Franz-Josef-IIBatch & Shell7 Kommentare

Hello alle miteinander Ich versuche mich (noch immer ;-) noch nicht aufgegeben) im scripten mit der Powershell. Jetzt habe ...

Batch & Shell
Powershell- User Export von Ad und CSV Datei Umbenennen bringt Fehler
gelöst Frage von ArseneBatch & Shell14 Kommentare

Guten Tag an alle, ich bin ein Anfänger in Powershell und hoffe mal hier im Forum eine Lösung zu ...

Windows Server
Alle User im AD als CSV speichern
Frage von opc123Windows Server4 Kommentare

Hallo, wie kann ich alle User im AD in eine CSV speichern, aber ohne das die im AD gelöscht ...

Neue Wissensbeiträge
Microsoft

Update KB4073578 für AMD CPU (Spectre und Meltdown Lücke)

Information von sabines vor 2 StundenMicrosoft

Wegen Problemen (BOSD, nicht startende PCs) wurde das Update KB4056897 und KB4056894 für AMD CPUs zurückgezogen. Dieses Update KB4073578 ...

Mac OS X

MacOS wo ist die Tilde ?

Tipp von Alchimedes vor 14 StundenMac OS X1 Kommentar

Hallo, ich hab eine MacOS qwertz Keyboard auf US Layout umgestellt da die Sonderzeichen besser erreichbar sind. Leider fehlt ...

Datenschutz

Weitere Informationen zum Sicherheitsproblem BeA

Information von Penny.Cilin vor 21 StundenDatenschutz

Im folgenden ein weiterer Bericht über die Sicherheitsprobleme von Bea. Fataler Konstruktionsfehler im besonderen elektronischen Anwaltspostfach Gruss Penny

Windows 10

Systemdienste behalten nach Win10 inplace-Upgrade nicht die ggf. modifizierte Startart bei

Tipp von DerWoWusste vor 23 StundenWindows 103 Kommentare

Stellt Euch vor, Ihr habt ein Win10 System und modifiziert dort die Startart von Systemdiensten. Zum Beispiel wollt Ihr ...

Heiß diskutierte Inhalte
Netzwerke
NTFS-Berechtigung
Frage von Daoudi1973Netzwerke23 Kommentare

Hallo zusammen und frohes neues Jahr (Sorry, ich bin spät dran) Meine Frage: 1- Ich habe einen Ordner im ...

Batch & Shell
AD-Abfrage in Batchdatei und Ergebnis als Variable verarbeiten
gelöst Frage von Winfried-HHBatch & Shell19 Kommentare

Hallo in die Runde! Ich habe eine Ergänzungsfrage zu einem alten Thread von mir. Ausgangslage ist die Batchdatei, die ...

Windows 10
Netbook erkennt Soundkarte nicht - keinerlei Info zum Hersteller und Modell vom Netbook und Hardware bekannt
Frage von fyrb38Windows 1018 Kommentare

Guten Tag, meine Schwester reist in einigen Wochen für ein paar Monate ins Ausland und hat sich dafür ein ...

Microsoft Office
Deaktivieren von Startbildschirm und Backstage-Ansicht in Office 2016 per Batch-Datei
Anleitung von SarekHLMicrosoft Office17 Kommentare

Guten Morgen zusammen! Ich habe mir gestern (auch mit Hilfe dieses Boards) ein Script gebastelt, um in Office 2016 ...