Автоматическое создание каталогов и раздача прав средствами PowerShell
скрипт, PowerShell, личные каталоги, ACL
Привет!
Помоги пожалуйста если знаешь как это подправить.
Возникла задача:
1) Создать более 2000 личных каталогов с именем domain_username
2) Раздать полные права на эти папки, соответствующим пользователям domainusername
3) Как следствие, возникает желание все это автоматизировать, а данные для переменной «domain» и «username» брались из одного txt файла.
Домены у всех этих пользователей разные, по этому указание их обязательно.
Мои наработки на эту тему:
Set-Location C:Musor
$un = "username"
$dn = "domain"
$dnu = $dn+""+$un
New-Item $dn"_"$un -ItemType "Directory"
[System.Security.AccessControl.DirectorySecurity]$gacl = Get-Acl -Path C:Musor$dn"_"$un
$nacl = New-Object System.Security.AccessControl.FileSystemAccessRule("domainusername ","FullControl","Allow")
$gacl.AddAccessRule($nacl)
set-acl -aclobject $gacl -path C:Musor$dn"_"$un
Проблемы с которыми я столкнулся:
1) Я не пойму как мне сделать цикличность и само обращение к текстовому файлу с именами.
2) Когда я в 7-й строчке указываю не явное имя «domainusername», а переменную «$dnu» скрипт перестает раздавать права.
Get-Content filename.txt|ForEach-Object {
$Match=[Regex]::Match($_,"^s*(?<Domain>S+)s+(?<UserName>S+)s*$") #Предпологается, что строка в файле имеет вид: domain username
if(!$Match.Success){
Write-Error "Ошибка в формате строки" -Category ParserError -TargetObject $_
return
}
$Domain=$Match.Groups["Domain"].Value
$UserName=$Match.Groups["UserName"].Value
$FullUserName="$Domain$UserName"
$FolderName="C:Musor$Domain`_$UserName"
New-Item $FolderName -ItemType d
$ACL=Get-Acl $FolderName
$Rule=New-Object Security.AccessControl.FileSystemAccessRule $FullUserName,FullControl,"ContainerInherit,ObjectInherit",None,Allow
$ACL.AddAccessRule($Rule)
Set-Acl $FolderName $ACL
}
Используются технологии
uCoz