Создаем кучу пользвателей с кучей параметров, содаем для них группу безопасности, создаем папку для группы, а внутри этой папки - личные папки пользователей и нужными нам правами.
Условия:
AD
WIndows 2008 R2
Powershell_ise
модуль NTFSSecurity для powershell
файловая шара для создания папок \\studsrv\students
1. Создаем CSV файл в кодировке Unicode, где описываем в столбцах нужные параметры. Например создадим 4 студентов:
#имена столбцов
Name,Password,Surname,GivenName,DisplayName,Description,Department,profilePath,homeDirectory,Title,Division,City,ScriptPath,SamAccountName
#содержимое столбцов
students14st30,dofbwut,Ivanova,Alena,Иванова Алёна Юрьевна,Студент_с_2014_года,students-14,\\dc1\profiles\student.man,\\studsrv\students\students14\students14st30,Студент,students-14,Perm,start_st.bat,students14st30
students14st31,jghwpty,Petrov,Nikolai,Петров Николай Сергеевич,Студент_с_2014_года,students-14,\\dc1\profiles\student.man,\\studsrv\students\students14\students14st31,Студент,students-14,Perm,start_st.bat,students14st31
students14st32,nkfroqw,Sidorov,Bogadn,Сидоров Богдан Станиславович,Студент_с_2014_года,students-14,\\dc1\profiles\student.man,\\studsrv\students\students14\students14st32,Студент,students-14,Perm,start_st.bat,students14st32
students14st33,lkdtwqe,reserv,reserv,reserv,Студент_с_2014_года,students-14,\\dc1\profiles\student.man,\\studsrv\students\students14\students14st33,Студент,students-14,Perm,start_st.bat,students14st33
более подробно см. http://parafoxer.livejournal.com/106150.html или по тегу powershell
2. Называем и размещаем этот файл C:\scripts\students\students-14.csv
3. Открываем Powershell ISE и копируем туда код:
#Разрешаем скрипты, импортируем модуль
Set-ExecutionPolicy Unrestricted -force
import-module activedirectory
#создаем кучу пользователей
Import-CSV -Path "C:\scripts\students\students-14.csv" | ForEach-Object -process {New-ADuser -Name $_.Name -Surname $_.Surname -City $_.City -Department $_.Department -profilePath $_.profilePath -homeDirectory $_.homedirectory -GivenName $_.GivenName -Title $_.Title -Description $_.Description -DisplayName $_.DisplayName -Division $_.Division -ScriptPath $_.ScriptPath -SamAccountName $_.SamAccountName -Path "OU=Student,OU=Students_OU,DC=domain,DC=gorod,DC=ru" -CannotChangePassword $true -ChangePasswordAtLogon $false -PasswordNotRequired $true -AccountPassword (ConvertTo-SecureString $_.Password -AsPlainText -Force) -Company domain_gorod_students}
Start-Sleep -s 5
#создаем группу безопасности для этих пользователей
New-AdGroup -Name students-14 -SamAccountName students-14 -Description "Группа студентов students-14" -GroupCategory Security -GroupScope Global -Path "OU=Student,OU=Students_OU,DC=domain,DC=gorod,DC=ru"
Start-Sleep -s 5
#добавляем туда всех этих пользователей
Get-ADUser -filter {(Department -eq "students-14")} | ForEach-Object -process {Add-ADGroupMember -identity "students-14" -Members $_.SamAccountName}
Start-Sleep -s 5
#добавлем группу пользователей в общую группу ВСЕХ пользователей - в группу Students
Add-ADGroupMember Students students-14
Start-Sleep -s 5
#создаем для группы папку, в которой будут храниться личные папки пользователей
Get-ADgroup students-14 | Sort-Object -Property Name | Select-Object -Property sAMAccountName | foreach {
$folderName = $_.SamAccountName
$Dir = "\\studsrv\students\"
New-Item -ItemType directory -Path $Dir -Name $folderName}
Start-Sleep -s 5
#импортируем модуль ntfssecurity (подробнее см. http://parafoxer.livejournal.com/188293.html) и создаем для каждого пользователя личную папку, именую ее именем пользователя (samAccountName) и даем на них полные права администраторам (user1, user2, user3)
import-module ntfssecurity
Get-Item \\STUDSRV\students\students-14| Add-Ace -Account domain\user1 -AccessRights FullControl
Get-Item \\STUDSRV\students\students-14| Add-Ace -Account domain\user2 -AccessRights FullControl
Get-Item \\STUDSRV\students\students-14| Add-Ace -Account domain\user3 -AccessRights FullControl
Start-Sleep -s 5
$rootDir = "\\studsrv\students\students-14\"
Get-ADUser -filter {(Department -eq "students-14")} | foreach {
$folderName = "$($rootDir)$($_.Department)\$($_.SamAccountName)"
New-Item -ItemType directory -Path $folderName}
Start-Sleep -s 5
4. Назначаем каждому пользователю нужные права с использованием функционала ntfssecurity. Обратите внимание - для каждого пользователя выпоняется своя команда. Назначение прав просто через powershell без модуля ntfssecurity гораздо сложнее - там всего 2 команды get-acl \ set-acl а все остальное - куча методов, осваивать которые желания нет. Шаблон такой команды в экселе создать несложно, заменять и продлять требуется только номера пользователей.
Get-Item \\STUDSRV\students\students-14\students14st30 | Add-Ace -Account hse\students14st28 -AccessRights Modify, Synchronize
Get-Item \\STUDSRV\students\students-14\students14st31 | Add-Ace -Account hse\students14st29 -AccessRights Modify, Synchronize
Get-Item \\STUDSRV\students\students-14\students14st32 | Add-Ace -Account hse\students14st30 -AccessRights Modify, Synchronize
Get-Item \\STUDSRV\students\students-14\students14st33 | Add-Ace -Account hse\students14st30 -AccessRights Modify, Synchronize
т.к. модуль ntfssecurity уже импортиорван (п.3) выполняем команды сразу
5. Итог - куча октлюченных (!не забыть включить) пользователей, в группе, с папками, с правами

