Простенький скрипт, точнее две его разновидности, для случая, когда необходимо создать папки для ряда пользователей на файловом сервере при условии, что названия папок будут совпадать с именами пользователей и эти пользователи будут иметь определенный уровень доступа к этим (своим) папкам. Все это может создаваться внутри определенной папки непосредственно на сервере или через сеть в общей папке по UNC пути.
Первый пример использует дополнительный модуль ActiveDirectory и предназначен для случая, когда пользователи находятся в каком-либо OU в AD:
# # PowerShell Script. # Creates home folders for users from an OU in AD and set permissions. # Prepared by Alexander Lipovetskiy. August 2013. # cls # We need the AD module for this first Import-Module ActiveDirectory # A folder or share where home folders must be created. $Dir = "D:\Users" # or $Dir = "\\server\share\" # Path to an OU with users. $Users = Get-ADUser -Filter * -SearchBase "OU=Users,OU=Muhosransk,DC=domain,DC=com" # Creating folders and set permissions. foreach ($User in $Users) { $User = $User.Name $Path = New-Item -ItemType Directory -Path $Dir -Name $User $Args = New-Object system.security.accesscontrol.filesystemaccessrule($User,"Modify, Synchronize", "ContainerInherit, ObjectInherit", "None", "Allow") $ACL = Get-Acl $Path $ACL.SetAccessRule($Args) Set-Acl $Path $ACL }
Второй пример обрабатывает список пользователей, находящийся в текстовом файле:
# # PowerShell Script. # Creates home folders for a list of users and set permissions. # Prepared by Alexander Lipovetskiy. August 2013. # cls # A folder or share where home folders must be created. $Dir = "D:\Users" # or $Dir = "\\server\share\" # Path to a text file with users. $Users = Get-Content "$home\users.txt" # Creating folders and set permissions. foreach ($User in $Users) { $Path = New-Item -ItemType Directory -Path $Dir -Name $User $Args = New-Object system.security.accesscontrol.filesystemaccessrule($User,"Modify, Synchronize", "ContainerInherit, ObjectInherit", "None", "Allow") $ACL = Get-Acl $Path $ACL.SetAccessRule($Args) Set-Acl $Path $ACL }
В данных примерах устанавливаются не полные права, а «Modify, Synchronize» не дающие возможности пользователям менять security permissions и становиться владельцами папок. Конечно все это можно поменять на FullControl или что-либо другое. Также в примерах установлено наследование разрешений подпапками и файлами.
UPDATE:
Третий пример, для случая, когда папки создаются для членов АД группы и прописываются им как домашние директории:
# # PowerShell Script. # Creates home folders for a list of users and set permissions. # Prepared by Alexander Lipovetskiy. August 2013. # cls # We need the AD module for this first Import-Module ActiveDirectory # A folder or share where home folders must be created. $Dir = "D:\Users" # or $Dir = "\\server\share\" # Extract group members. $Users = Get-ADGroupMember -Identity "Groupname" -Recursive # Creating folders and set permissions. foreach ($User in $Users) { $Path = New-Item -ItemType Directory -Path $Dir -Name $User $Args = New-Object system.security.accesscontrol.filesystemaccessrule($User,"Modify, Synchronize", "ContainerInherit, ObjectInherit", "None", "Allow") $ACL = Get-Acl $Path $ACL.SetAccessRule($Args) Set-Acl $Path $ACL Set-ADUser -Identity $User -HomeDrive "Z:" -HomeDirectory "$Dir$User" }
Взято здесь