Автоматическое создание каталогов и раздача прав средствами PowerShell

скрипт PowerShell ACL личные каталоги

Привет!
Помоги пожалуйста если знаешь как это подправить.

Возникла задача:
1) Создать более 2000 личных каталогов с именем domain_username
2) Раздать полные права на эти папки, соответствующим пользователям domain\username
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("domain\username ","FullControl","Allow")
$gacl.AddAccessRule($nacl)
set-acl -aclobject $gacl -path C:\Musor\$dn"_"$un

Проблемы с которыми я столкнулся:
1) Я не пойму как мне сделать цикличность и само обращение к текстовому файлу с именами.
2) Когда я в 7-й строчке указываю не явное имя «domain\username», а переменную «$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
}


15 лет назад

RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.

Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.

Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.