Fragensteller
Powershell Active Directory

Frage
-
Hallo Zusammen,
folgendes Thema: Wir haben bei uns mehrere Abteilungen. Diese sind in jedem Benutzer im AD bei Department hinterlegt.
Wir würden gerne für jede Abteilung eine Security Group erstellen und die User automatisch über das Powershell Skript verschieben lassen. Dieses Skript sollte z.b jeden Tag 1x laufen.
Jetzt ist meine Frage, ob ich über Powershell die Abteilungen auslesen- für jede Abteilung eine Security Group erstellen kann in die die Benutzer automatisch verschoben werden. Dies sollte alles automatisch mit dem Skript passieren.
Kann mir bitte jemand weiterhelfen?
Das auslesen der Departments mache ich so:
Get-ADUser -Filter * -Properties Department | Sort Department | Select Name, Department- Bearbeitet IT_Administrator1212 Dienstag, 22. Oktober 2019 06:49
Alle Antworten
-
Jetzt ist meine Frage, ob ich über Powershell die Abteilungen auslesen- für jede Abteilung eine Security Group erstellen kann in die die Benutzer automatisch verschoben werden. Dies sollte alles automatisch mit dem Skript passieren.
Ja das geht. Neue Gruppen kannst du mit new-adgroup erstellen. Du musst halt einmal die Departments aufräumen, so das du jede Abteilung nur einmal hast (get-unique). Die Speicherst du in ein Array und dann kannst du mit einer Schleife für jeden Hit im Array eine Security Group erstellen.
Mit einer zweiten Schleife kannst du dann die Member, bei denen die Abteilung zur Security Group matched, der entsprechenden Security Group hinzufügen.
Dieses Skript kannst du dann einfach als Aufgabe einplanen.
Wenn das Skript regelmäßig laufen soll, solltest du außerdem noch eine Überprüfung einbauen, die checked, ob schon eine Security Group mit dem Namen besteht.
Gruß
- Bearbeitet marc-sysadmn Dienstag, 22. Oktober 2019 07:09
-
Ist dies viel Aufwand?
Nein.
Aber hier noch ein extra Tipp von mir: Falls die Werte im Department-Attribut nicht maschinell aus einem HR-System dort reinkommen, solltest Du in Deinem Skript eine verbindliche Liste dieser Werte (als Array ;-) ) pflegen und nicht blind Sicherheitsgruppen anlegen, nur weil jemand etwas in Department reingeschrieben hat.
Evgenij Smirnov
-
Da führt wohl kein Weg dran vorbei, außer ihr bezahlt jmd. dafür.
An Powershell führt für dich als Windows Admin mittelfristig eh kein Weg dran vorbei.
Lohnt sich also auf jeden Fall.
Und die einzelnen cmdlets, die für deinen Tasks benötigt werden, gehören eh zu den Basics. Du solltest also relativ schnell erfolgreich das Skript schreiben können.
Gruß
-
Hier habe ich meinen Code:
Get-ADUser -Filter * -Properties Department | Sort Department | Select Department | Export-Csv C:\ADusers.csv
$groups = Import-Csv C:\ADusers.csv
foreach ($group in $groups) {
New-ADGroup -Name $group.Department -Path "OU=Global,OU=Group,OU=Test,DC=test,DC=domain,DC=de" -GroupCategory Security -GroupScope Global
}
Get-ADUser -Filter * -Properties SamAccountName, Department | Sort SamAccountName | Select SamAccountName, Department | Export-Csv C:\Name.csv
import-csv C:\Name.csv | ForEach-Object {Add-ADGroupMember -Identity $_.department -Members $_.samaccountname}Wenn ich das Skript ausführt, dann liest er als erstes die ganzen Departments und erstellt die Security Groups. Er schiebt auch die User in die richtigen Gruppen. Soweit schon mal sehr gut.
Jetzt ist mein Problem: Wenn ich von einem User der bereits in der richtigen Security Group ist (z.B User hat das Department: Sales und ist in der Security Group -> Sales) das Department ändere dann bleibt er trotzdem in der Gruppe Sales. Ich bräuchte noch eine zusätzliche Abfrage, das er dann aus der Alten Department Gruppe gelöscht wird...
Gruß
- Bearbeitet IT_Administrator1212 Mittwoch, 23. Oktober 2019 09:31
-
Und wie identifizierst Du das bisherige - nicht mehr gültige - Department?
So als Anregung sehe ich mehrere Möglichkeiten:
1. Du steckst alle diese Gruppen in eine eigene OU. Dann kannst Du vor dem Skriptlauf (oder auch während) alle Mitglieder einfach rauswerfen. Oder noch besser, Du gehst durch alle Mitglieder durch und wirfst die raus, die ein anderes Department haben.
2. Du merkst Dir für jede Gruppe, wen Du grad reingesteckt hast. Alle, die sonst noch drin sind, fliegen raus.
Greetings/Grüße, Martin - https://mvp.microsoft.com/en-us/PublicProfile/5000017 Mal ein gutes Buch über GPOs lesen? - http://www.amazon.de/Windows-Server-2012--8-Gruppenrichtlinien/dp/3866456956 Good or bad GPOs? My blog - http://evilgpo.blogspot.com And if IT bothers me? Coke bottle design refreshment - http://sdrv.ms/14t35cq