mcnewbie
Goto Top

Ordner aus AD heraus erstellen

Guten Morgen zusammen,

wie in meinem vorherigen Post benötige ich wieder einmal Hilfe.
Ausgangslage ist, ich habe ca.1000 Ordner und in diesen Ordner möchte ich jeweils zwei Namens gleiche Unterordner erstellen, welche aber jeweils einer anderen AD Gruppe gehören und somit auch immer anders zu Berechtigen sind.

Sprich:

Ordner 1 -> Unterordner 1
-> Unterordner 2


Ordner 2 -> Unterordner 1
-> Unterordner 2


Ordner 2 -> Unterordner 1
-> Unterordner 2


Die Ordner 1 -3 sind separat zu berechtigen!
Die jeweiligen Unterordner auch.

Es kommen also pro Ordner und Unterordner drei Ad Gruppen zum Einsatz.


Hat jemand eine Idee wie ich das umsetzen kann?
Mir erscheint es recht komplex und in der kurzen Zeit schaffe ich es bei bestem willen nicht.......


Gruß
mcNewbie

Content-ID: 7894820197

Url: https://administrator.de/contentid/7894820197

Printed on: October 4, 2024 at 02:10 o'clock

SlainteMhath
SlainteMhath Jul 19, 2023 at 06:44:09 (UTC)
Goto Top
Moin,

wie in deinem anderen Post bereits erklärt:

- mit New-Item erzeugst du Ordner
- mit Get-/Set-ACL setzt du die Rechte

Code wurde dort auch schon genug gepostet...

lg,
Slainte
mcNewbie
mcNewbie Jul 19, 2023 at 06:57:35 (UTC)
Goto Top
Zitat von @SlainteMhath:

Moin,

wie in deinem anderen Post bereits erklärt:

- mit New-Item erzeugst du Ordner
- mit Get-/Set-ACL setzt du die Rechte

Code wurde dort auch schon genug gepostet...

lg,
Slainte

Ja, dass stimmt. Aber wie binde ich die Ad gruppen an die jeweiligen Unterordner, dass verstehe ich nicht so recht...
7426148943
7426148943 Jul 19, 2023 updated at 07:28:09 (UTC)
Goto Top
Zitat von @mcNewbie:
Ja, dass stimmt. Aber wie binde ich die Ad gruppen an die jeweiligen Unterordner, dass verstehe ich nicht so recht...

?? Du stehst wohl mal wieder auf dem berühmten Schlauch oder hast nur keinen Bock zu arbeiten ...
foreach($folder in Get-Childitem "d:\BaseFolder" -Directory){  
    $currentfolder = $folder.Fullname
    $subfolder1 = (md "$currentfolder\Unterordner1" -Force).Fullname  
    $subfolder2 = (md "$currentfolder\Unterordner2" -Force).Fullname  

    # hier nun das selbe wie im letzten Post zum Setzen der Berechtigungen , diesmal eben nur 3 mal für die Pfade in $currentfolder , $subfolder1 und $subfolder2 wiederholen
    # fertig.
    $acl = Get-Acl $currentfolder
    $ace1 = New-Object System.Security.AccessControl.FileSystemAccessRule("GruppeA", "Read","ContainerInherit,ObjectInherit","None","Allow")  
    $acl.SetAccessRule($ace1)
    Set-Acl -Path $currentfolder -AclObject $acl
    
    $acl = Get-Acl $subfolder1
    $ace2 = New-Object System.Security.AccessControl.FileSystemAccessRule("GruppeB", "Read","ContainerInherit,ObjectInherit","None","Allow")    
    $acl.SetAccessRule($ace2)
    Set-Acl -Path $subfolder1 -AclObject $acl

    $acl = Get-Acl $subfolder2
    $ace3 = New-Object System.Security.AccessControl.FileSystemAccessRule("GruppeC", "Read","ContainerInherit,ObjectInherit","None","Allow")    
    $acl.SetAccessRule($ace3)
    Set-Acl -Path $subfolder2 -AclObject $acl
}

Zeppel
Mr-Gustav
Mr-Gustav Jul 19, 2023 at 07:38:23 (UTC)
Goto Top
Und das ganze dann noch mit einer CSV als Datengrundlage füttern in der dann alles drinne steht was angelegt werden soll. Dann machst du noch ein for each x in File.CSV mit ins Script und dann legt dir das Script alles passend an.

Die CSV musst du natürlich vorher erstellt haben gemäß deinen Vorgaben mit Name / Ordner / AD Gruppen etc...

Die AD Gruppen könnte man ja auch via Powesehll anlegen wenn man sich vorher ein Namenskonzept überlegt hat braucht man relativ wenig Input wie die Gruppen dann heißen sollen.
Die Powershell eigent sich hervoragend für solche Aufgaben.
mcNewbie
mcNewbie Jul 19, 2023 at 08:10:12 (UTC)
Goto Top
Zitat von @7426148943:

Zitat von @mcNewbie:
Ja, dass stimmt. Aber wie binde ich die Ad gruppen an die jeweiligen Unterordner, dass verstehe ich nicht so recht...

?? Du stehst wohl mal wieder auf dem berühmten Schlauch oder hast nur keinen Bock zu arbeiten ...
foreach($folder in Get-Childitem "d:\BaseFolder" -Directory){  
    $currentfolder = $folder.Fullname
    $subfolder1 = (md "$currentfolder\Unterordner1" -Force).Fullname  
    $subfolder2 = (md "$currentfolder\Unterordner2" -Force).Fullname  

    # hier nun das selbe wie im letzten Post zum Setzen der Berechtigungen , diesmal eben nur 3 mal für die Pfade in $currentfolder , $subfolder1 und $subfolder2 wiederholen
    # fertig.
    $acl = Get-Acl $currentfolder
    $ace1 = New-Object System.Security.AccessControl.FileSystemAccessRule("GruppeA", "Read","ContainerInherit,ObjectInherit","None","Allow")  
    $acl.SetAccessRule($ace1)
    Set-Acl -Path $currentfolder -AclObject $acl
    
    $acl = Get-Acl $subfolder1
    $ace2 = New-Object System.Security.AccessControl.FileSystemAccessRule("GruppeB", "Read","ContainerInherit,ObjectInherit","None","Allow")    
    $acl.SetAccessRule($ace2)
    Set-Acl -Path $subfolder1 -AclObject $acl

    $acl = Get-Acl $subfolder2
    $ace3 = New-Object System.Security.AccessControl.FileSystemAccessRule("GruppeC", "Read","ContainerInherit,ObjectInherit","None","Allow")    
    $acl.SetAccessRule($ace3)
    Set-Acl -Path $subfolder2 -AclObject $acl
}

Zeppel

Eher der berühmte Schlauch....
Die Lust auf Arbeit ist absolut gegeben face-smile
mcNewbie
mcNewbie Jul 19, 2023 at 08:12:00 (UTC)
Goto Top
Zitat von @Mr-Gustav:

Und das ganze dann noch mit einer CSV als Datengrundlage füttern in der dann alles drinne steht was angelegt werden soll. Dann machst du noch ein for each x in File.CVS mit ins Script und dann legt dir das Script alles passend an.

Die CVS musst du natürlich vorher erstellt haben gemäß deinen Vorgaben mit Name / Ordner / AD Gruppen etc...

Die AD Gruppen könnte man ja auch via Powesehll anlegen wenn man sich vorher ein Namenskonzept überlegt hat braucht man relativ wenig Input wie die Gruppen dann heißen sollen.
Die Powershell eigent sich hervoragend für solche Aufgaben.

Die AD Gruppen gibt es bereits und wurden vom Kunde angelegt, darauf hab ich keinen Einfluss! Ich wollte keinen Export als CSV machen, da ich es flexibel halten will, falls neue Gruppen dazu kommen, einfach das skript drüber laufen lassen und die neu dazu gekommenen erstellen...
Mr-Gustav
Mr-Gustav Jul 20, 2023 at 05:41:59 (UTC)
Goto Top
Aber dann musst du ja immer wieder dein Script anpassen. ich würde da eine TXT nehmen bzw. ne CSV und würde das Script daraus sich die Daten hohlen lassen.
Vorteil ist nebenbei wenn du das dann als TXT oder CSV abspeicherst hast du gleich noch was an Doku ohne groß was erstellen zu müssen.
mcNewbie
mcNewbie Jul 20, 2023 at 06:06:40 (UTC)
Goto Top
Zitat von @Mr-Gustav:

Aber dann musst du ja immer wieder dein Script anpassen. ich würde da eine TXT nehmen bzw. ne CVS und würde das Script daraus sich die Daten hohlen lassen.
Vorteil ist nebenbei wenn du das dann als TXT oder CVS abspeicherst hast du gleich noch was an Doku ohne groß was erstellen zu müssen.


Dürfte sicht nicht mehr viel ändern wenn die Umgebung produktiv ist, daher sollte das Skript auch soweit passen
mcNewbie
mcNewbie Jul 20, 2023 at 06:06:43 (UTC)
Goto Top
Scheint jetzt alles soweit zu klappen mit der Ordner Erstellung.
Jetzt haut es mir aber den Fehler, beim erstellen der ACL das der Name(SamAccountName) der AD Gruppe zu lange ist....
Kann man den in Verbindung mit den ACL´s kürzen? Geschafft habe ich es nicht, da er ja essentiell für die Berechtigung ist.
    $acl = Get-Acl $subfolderxyz
    $objACE = New-Object System.Security.AccessControl.FileSystemAccessRule($group.SamAccountName, "Modify","ContainerInherit,ObjectInherit","None","Deny")  
    $acl.SetAccessRule($objACE)
    Set-Acl -Path $subfolderxyz -AclObject $acl
7907292512
7907292512 Jul 20, 2023 updated at 14:14:11 (UTC)
Goto Top
Moin
SamAccounNames dürfen aus kompatibl. max. 20 Zeichen lang sein. Sind sie länger, dann habt ihr euch selbst ein Bein gestellt und müsst eure Namen kürzen.

Gruß siddius