Создание персональных папок для пользователей домена

—

от автора

Простенький скрипт, точнее две его разновидности, для случая, когда необходимо создать папки для ряда пользователей на файловом сервере при условии, что названия папок будут совпадать с именами пользователей и эти пользователи будут иметь определенный уровень доступа к этим (своим) папкам. Все это может создаваться внутри определенной папки непосредственно на сервере или через сеть в общей папке по 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 или что-либо другое. Также в примерах установлено наследование разрешений подпапками и файлами.

ссылка на оригинал статьи http://habrahabr.ru/post/189292/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *