PowerShell: Erstelle Verzeichnisse pro Benutzer aus AD, und setze Berechtigungen

Obige Anforderung wurde an mich gestellt. Wie immer „quick and dirty“.

Das Script basiert auf den Modulen „NTFSSecurity“ (File System Security PowerShell Module), danke schonmal dafür.

Beschrieben ist das ganze gut auf der Technet-Gallery Seite, und hier.

Das Module habe ich unter C:\Program Files\WindowsPowerShell\Modules „installiert“ (simples Filecopy). Danach kann das Modul via

Import-Module NTFSSecurity

importiert werden.

Mein Script sieht wie folgt aus:

# Create Folders based on a AD OU
# Scripted by M. Wildi, IN4OUT it solutions ag, 5000 Aarau
# v 1.0 16.08.2017
# ###########################################################################
# Import Module
# Module from https://gallery.technet.microsoft.com/scriptcenter/1abd77a5-9c0b-4a2b-acef-90dbb2b84e85
Import-Module NTFSSecurity

# set Variables
$CustClass = "DT2017"
$CustRootDir = "\\FILESERVER\Share\share\root\"
$CustDir = $CustRootDir + $CustClass
# Create Base Dirs
md $CustDir
md $CustDir\_Public

# Set Permissions
Get-Item $CustDir | Disable-NTFSAccessInheritance
Get-NTFSAccess $CustDir | Where-Object {$_.Account -like "DOMAIN\GROUP"} | Remove-NTFSAccess
Get-Item $CustDir | Add-NTFSAccess -Account "DOMAIN\$CustClass" -AccessRights ReadAndExecute -AppliesTo ThisFolderSubfoldersAndFiles

Get-Item $CustDir\_Public| Disable-NTFSAccessInheritance
Get-NTFSAccess $CustDir\_Public| Where-Object {$_.Account -like "DOMAIN\GROUP"} | Remove-NTFSAccess
Get-Item $CustDir\_Public| Add-NTFSAccess -Account "DOMAIN\$CustClass" -AccessRights FullControl -AppliesTo ThisFolderSubfoldersAndFiles
Get-Item $CustDir\_Public| Add-NTFSAccess -Account "DOMAIN\GROUP2" -AccessRights FullControl -AppliesTo ThisFolderSubfoldersAndFiles

Get-ADUser -Filter * -SearchBase "OU=$CustCLass,OU=OU1,OU=Users,OU=CUSTOMER,DC=CUSTOMER,DC=intern" -Properties * | 
ForEach-Object {
md $CustDir\$($_.SamAccountName)
Get-Item $CustDir\$($_.SamAccountName) | Disable-NTFSAccessInheritance
Get-NTFSAccess $CustDir\$($_.SamAccountName) | Where-Object {$_.Account -like "DOMAIN\$CustClass"} | Remove-NTFSAccess
Get-Item $CustDir\$($_.SamAccountName) | Add-NTFSAccess -Account "DOMAIN\$($_.SamAccountName)" -AccessRights FullControl -AppliesTo ThisFolderSubfoldersAndFiles
Get-Item $CustDir\$($_.SamAccountName) | Add-NTFSAccess -Account "DOMAIN\GROUP2" -AccessRights FullControl -AppliesTo ThisFolderSubfoldersAndFiles
}
Advertisements

Autor: Martin Wildi

Ich arbeite bei IN4OUT AG (www.in4out.ch), als System Engineer. Beim täglichen First- und Second-Level Support erfahre und erarbeite ich einiges :).

Kommentar verfassen

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden /  Ändern )

Google+ Foto

Du kommentierst mit Deinem Google+-Konto. Abmelden /  Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden /  Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden /  Ändern )

Verbinde mit %s