Powershell: Letzte Schritte
Hallo Zusammen
Dank euch ist das Script nun fast fertig und sieht so aus:
Jetzt gibt es nur noch eine kleine Sache und zwar folgendes:
Wenn ich einen Benutzer in der AD habe, der aber nicht in meiner CSV ist, soll er gelöscht werden. Also Beispielsweise ich habe in meiner OU die Benutzer:
hans
fritz
peter
Aber in meiner CSV ist nur
Hans
Peter
vorhanden. Das heisst, es soll dann Fritz löschen. Versucht habe ich dies mit dem 3 elseif($Benutzername -eq $NULL). Nur leider springt das Script, wenn ein Benutzer nicht vorhanden ist, immer in das zweite elseif ($Benutzername -eq $ADAbfrage).
Wie könnte ich dies nun noch umsetzen?
Danke für eure Antworten.
Gruss
Gabriel
Dank euch ist das Script nun fast fertig und sieht so aus:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
Import-Module ActiveDirectory;
$Zaehler = 0
$Import = @(Import-CSV C:\users\administrator\desktop\test.csv)
$Reihenzaehler = $Import | Measure-Object;
$Benutzername = $Import[$Zaehler].sAMAccountName;
$CompletePath = "CN=$Benutzername,OU=ZugelasseneMaschinen,OU=UEB,DC=ueb,DC=lokal";
do
{
$ADAbfrage = $ADAbfrage = get-aduser -Identity "CN=$Benutzername,OU=ZugelasseneMaschinen,OU=UEB,DC=ueb,DC=lokal" -ErrorAction SilentlyContinue
$Benutzername
if ($Benutzername -ne $ADAbfrage )
{
csvde -i -k -f C:\users\Administrator\Desktop\test.csv
Set-AdAccountPassword -Identity $Benutzername -PassThru -Reset -Newpassword (ConvertTo-Securestring $Import[$Zaehler].sAMAccountName -Asplaintext -force)
$Zaehler = $Zaehler + 1;
}
elseif ($Benutzername -eq $ADAbfrage)
{
write-host "nix";
}
elseif ($Benutzername -eq $NULL)
{
write-host "bööb"
Remove-ADUser -Identity "CN=$Benutzername,OU=ZugelasseneMaschinen,OU=UEB,DC=ueb,DC=lokal" -Confirm:$false
}
$Zaehler = $Zaehler + 1;
Clear-Variable ADAbfrage
}while ($Reihenzaehler > $Zaehler )
Jetzt gibt es nur noch eine kleine Sache und zwar folgendes:
Wenn ich einen Benutzer in der AD habe, der aber nicht in meiner CSV ist, soll er gelöscht werden. Also Beispielsweise ich habe in meiner OU die Benutzer:
hans
fritz
peter
Aber in meiner CSV ist nur
Hans
Peter
vorhanden. Das heisst, es soll dann Fritz löschen. Versucht habe ich dies mit dem 3 elseif($Benutzername -eq $NULL). Nur leider springt das Script, wenn ein Benutzer nicht vorhanden ist, immer in das zweite elseif ($Benutzername -eq $ADAbfrage).
Wie könnte ich dies nun noch umsetzen?
Danke für eure Antworten.
Gruss
Gabriel
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 230922
Url: https://administrator.de/forum/powershell-letzte-schritte-230922.html
Ausgedruckt am: 13.04.2025 um 06:04 Uhr
4 Kommentare
Neuester Kommentar
Hey du benutzt in deinem Skript das Programm CSVDE. Damit kannst du allerdings nur Objekte hinzufügen. Das Richte Programm wäre bei deinem Wunsch aber LDIFDE. Damit kannst du aus eine *.ldif Datei Objekte erstellen, ändern und löschen!
Du musst also ldifde statt csvde benutzen und deine *.csv in eine *.ldif um basteln.
Hier bekommst du dann weitere Informationen zu LDIFDE.
http://technet.microsoft.com/de-de/library/cc730865.aspx
LG
Du musst also ldifde statt csvde benutzen und deine *.csv in eine *.ldif um basteln.
Hier bekommst du dann weitere Informationen zu LDIFDE.
http://technet.microsoft.com/de-de/library/cc730865.aspx
LG
Hallo Gabriel,
zu dem Code sag ich nichts mehr, hatte dir beim letzten mal eine bessere Alternative vorgeschlagen, aber zurück zum Thema.
Das Löschen von Usern im AD die nicht in deiner CSV-Datei stehen lässt sich so in einem Schlag machen
Grüße Uwe
zu dem Code sag ich nichts mehr, hatte dir beim letzten mal eine bessere Alternative vorgeschlagen, aber zurück zum Thema.
Das Löschen von Usern im AD die nicht in deiner CSV-Datei stehen lässt sich so in einem Schlag machen
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
$allADUsers = Get-ADUser -Filter * -SearchBase "OU=ZugelasseneMaschinen,OU=UEB,DC=ueb,DC=lokal" | select -ExpandProperty SamAccountName
$allCSVUsers = Import-CSV "C:\users\administrator\desktop\test.csv" | select -ExpandProperty SamAccountName
$allUsersNotInCSV = Compare-Object -ReferenceObject $allADUsers -DifferenceObject $allCSVUsers | ?{$_.SideIndicator -eq "<="} | select
-ExpandProperty InputObject
foreach ($user in $allUsersNotInCSV){
echo "Lösche Benutzer: $user ..."
Remove-ADUser -Identity "CN=$User,OU=ZugelasseneMaschinen,OU=UEB,DC=ueb,DC=lokal" -Confirm:$false
}