Skript für Aktualisierung der User im Active Directory
Hallo,
ich habe die Aufgabe unser Active Directory aufzuräumen. Dazu habe ich aus der Personalabteilung vier Listen (eine Liste pro Firma) bekommen mit den Arbeitnehmern, die bei dieser Firma beschäftigt sind. Für diese gibt es schon Benutzerkonten im Active Directory, dafür aber auch viele Benutzerkonten, die gelöscht werden sollen, da die dazugehörigen Personen nicht mehr für eine der vier Firmen arbeiten. Ich soll diese Benutzerkonten herausfinden und in einer OU verschieben und als inaktiv markieren.
Jetzt meine Frage an die Community:
Wie kann ich mit Hilfe von PowerShell herausfinden, welche Benutzerkonten nicht gebraucht werden mit Hilfe der Listen, die ich bekommen habe.
Also ich brauche ein Skript, das für mich anhand der Einträge in der Liste überprüft, ob ein Benutzerkonto existiert und für die Benutzerkonten zu denen kein Eintrag in der Liste ist, diese Konten in eine OU verschoben werden sollen.
Gruß.
Kabuntel
ich habe die Aufgabe unser Active Directory aufzuräumen. Dazu habe ich aus der Personalabteilung vier Listen (eine Liste pro Firma) bekommen mit den Arbeitnehmern, die bei dieser Firma beschäftigt sind. Für diese gibt es schon Benutzerkonten im Active Directory, dafür aber auch viele Benutzerkonten, die gelöscht werden sollen, da die dazugehörigen Personen nicht mehr für eine der vier Firmen arbeiten. Ich soll diese Benutzerkonten herausfinden und in einer OU verschieben und als inaktiv markieren.
Jetzt meine Frage an die Community:
Wie kann ich mit Hilfe von PowerShell herausfinden, welche Benutzerkonten nicht gebraucht werden mit Hilfe der Listen, die ich bekommen habe.
Also ich brauche ein Skript, das für mich anhand der Einträge in der Liste überprüft, ob ein Benutzerkonto existiert und für die Benutzerkonten zu denen kein Eintrag in der Liste ist, diese Konten in eine OU verschoben werden sollen.
Gruß.
Kabuntel
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 384336
Url: https://administrator.de/forum/skript-fuer-aktualisierung-der-user-im-active-directory-384336.html
Ausgedruckt am: 22.12.2024 um 17:12 Uhr
5 Kommentare
Neuester Kommentar
Servus @ Kabuntel ,
das ist schnell gemacht. Beispiel:
CSV mit folgendem Inhalt, die SamAccountNames:
Dann folgendes Powershell Skript abgefeuert (Quell OU, Ziel OU und Dateipfad und wenn andere CSV Überschriften auch die jeweilige in Zeile 1 natürlich anpassen, aber das solltest du ja hoffentlich selbst sehen können!):
Feddich.
Alternativ kannst du den Abgleich auch mit Compare-Object machen, aber da du in dem Bereich offensichtlich noch wenig Erfahrung hast wollte ich dich nicht gleich damit überfordern. Falls es dich trotzdem interessiert hier auch noch diese Variante:
Grüße Uwe
das ist schnell gemacht. Beispiel:
CSV mit folgendem Inhalt, die SamAccountNames:
Username
mmuster
kmeier
smusterfrau
$list = Import-CSV 'D:\mitarbeiter.csv' -Delimiter ";" | select -Expand Username
Get-AdUser -Filter * -SearchBase 'OU=MeineFirma,dc=domain,dc=tld' | ?{$_.SamAccountName -notin $list} | Set-AdUser -Enabled $false -PassThru | Move-ADObject -TargetPath 'OU=DisabledUsers,dc=domain,dc=tld' -Verbose
Alternativ kannst du den Abgleich auch mit Compare-Object machen, aber da du in dem Bereich offensichtlich noch wenig Erfahrung hast wollte ich dich nicht gleich damit überfordern. Falls es dich trotzdem interessiert hier auch noch diese Variante:
$list = Import-CSV 'D:\mitarbeiter.csv' -Delimiter ";" | select @{n='SamAccountName';e={$_.Username}}
Compare (Get-AdUser -Filter * -SearchBase 'OU=MeineFirma,dc=domain,dc=tld') $list -Property SamAccountName -PassThru | ?{$_.SideIndicator -eq '<='} | Set-AdUser -Enabled $false -PassThru | Move-ADObject -TargetPath 'OU=DisabledUsers,dc=domain,dc=tld' -Verbose
Grüße Uwe
Zitat von @Kabuntel:
nur leider stehe ich ganz am Anfang und viel Zeit zum Lernen bleibt grad auch nicht
Sehr schlechte Voraussetzungen für einen nachhaltigen PS Einstieg. Dir werden immer irgendwelche Dinge fehlen, da bei der PS die Grundlagen für ein gutes Verständnis essenziell sind.nur leider stehe ich ganz am Anfang und viel Zeit zum Lernen bleibt grad auch nicht
Was ich aber nicht erwähnt habe, ist, dass ich die SamAccountNames nicht habe, sondern nur Vorname, Nachname und Eintrittsdatum aus der Personalabteilung.
Auch kein Beinbruch, denn Get-Aduser
liefert dir diese Infos ebenfalls gleich mit.Bei einer CSV in folgendem Format
Vorname;Nachname;Eintrittsdatum
Max;Muster;10.05.2010
Helene;Musterfrau;04.06.2002
Folgender Code:
$list = Import-CSV 'D:\mitarbeiter.csv' -Delimiter ";" | %{"$($_.Vorname) $($_.Nachname)"}
Get-AdUser -Filter * -SearchBase 'OU=MeineFirma,dc=domain,dc=tld' -Properties Surname,Givenname | ?{"$($_.Givenname) $($_.Surname)" -notin $list} | Set-AdUser -Enabled $false -PassThru | Move-ADObject -TargetPath 'OU=DisabledUsers,dc=domain,dc=tld' -Verbose
Ich müsste also vorher ein Skript erstellen, dass mir bei Übereinstimmung mit Vorname und Nachname den SamAccountName wiederum in einer Liste exportiert.
Das musst du nicht erst umständlich exportieren der Abgleich geht direkt .Hast Du dafür eventuell auch einen Lösungsvorschlag???
S.o.
Powershell Grundlagen- und Praxisvermittlung: