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
}

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

This site uses Akismet to reduce spam. Learn how your comment data is processed.