Powershell Script um aus einer CSV Datei AD-User anzulegen, bzw. zu löschen
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:
Da drin stehen dann zB. folgende Zeilen:
Folgendes hab ich schon realisiert:
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
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:
auftrag,sAMAccountName,cn,FirstName,LastName,Password
Da drin stehen dann zB. folgende Zeilen:
anlegen,k.muster,Klaus Muster,Klaus,Muster,P@ssw0rd
anlegen,h.master,Heiko Master,Heiko,Master,P@ssw0rd
delete,john.woods,,,
delete,kim.ankers,,,
Folgendes hab ich schon realisiert:
$objOU=[ADSI]"LDAP://OU=FIRMA,DC=domain,DC=local"
$dataSource=import-csv "liste.csv"
foreach($dataRecord in $dataSource) {
$auftrag=$dataRecord.auftrag
if ($auftrag="anlegen") {
#map variables to data source
$sAMAccountName=$dataRecord.sAMAccountName
$cn=$dataRecord.cn
$givenName=$dataRecord.FirstName
$sn=$dataRecord.LastName
$displayName=$sn+", "+$givenName
$userPrincipalName=$givenName + "." + $sn + "@domain.local"
$password=$dataRecord.Password
Write-Output "User angelegt:"
Write-Output $dataRecord
Write-Output "------------------"
#create the user object
$objUser=$objOU.Create("user","CN="+$cn)
$objUser.Put("sAMAccountName",$sAMAccountName)
$objUser.Put("userPrincipalName",$userPrincipalName)
$objUser.Put("displayName",$displayName)
$objUser.Put("givenName",$givenName)
$objUser.Put("sn",$sn)
$objUser.SetInfo()
$objUser.SetPassword($password)
$objUser.psbase.InvokeSet("AccountDisabled",$false)
$objUser.SetInfo()
}
if ($auftrag="delete") {
$sAMAccountName=$dataRecord.sAMAccountName
Write-Output "Deletet"
$ou.Delete(„user“,“cn=$sAMAccountName“)
}
}
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
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 142433
Url: https://administrator.de/contentid/142433
Ausgedruckt am: 26.11.2024 um 01:11 Uhr
2 Kommentare
Neuester Kommentar
Hallo,
ersetze mal testhalber das Gleicheitszeichen in deinen If-Statements mit " -eq "
Oder nimm den hier IMO besser passenden Switch-Befehl.
Gruß
LotPings
ersetze mal testhalber das Gleicheitszeichen in deinen If-Statements mit " -eq "
Oder nimm den hier IMO besser passenden Switch-Befehl.
Gruß
LotPings