Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] Создание папок и подпапок из csv (http://forum.oszone.net/showthread.php?t=238283)

APermyakov@twitter 10-07-2012 10:29 1949166

Создание папок и подпапок из csv
 
Начал изучение PowerShell и пока есть трудности.

Задача стоит следующая
нужно на сетевом хранилище создать много папок по названию отдела с двумя подпапками одинакового названия (общая и отдел).
список отделов и названия папок буду брать из файлика csv
форма файлика примерно такая

name; subshare; subpersonal
руководство; общая; отдел
огэ; общая; отдел

Помогите осуществить.

Kazun 10-07-2012 13:34 1949262

Код:

Import-Csv folders.csv -Delimiter ";" |
        Foreach {md "\\server\share\$($_.name)\$($_.subshare)","\\server\share\$($_.name)\$($_.subpersonal)"}


Molchune 10-07-2012 14:05 1949276

Ну в принципе тоже самое
Код:

$folders = Import-Csv Folders.csv -Delimiter ";"
Foreach ($folder in $folders) {
New-Item -Path "\\server\$($folder.name)\$($folder.subpersonal)" -type "directory"
New-Item -Path "\\server\$($folder.name)\$($folder.subshare)" -type "directory"
}


APermyakov@twitter 11-07-2012 02:50 1949699

большое спасибо!

Решил не много усложнить.
Как теперь связать это с АД, т.е. на папку name дать доступ на чтение всем в АД, на папку subshare доступ для все на чтение и запись и на папку subpersonal доступ только определенной группе или пользователю.

Kazun 11-07-2012 10:05 1949774

Код:

$everyone = [Security.Principal.SecurityIdentifier]"S-1-1-0"
$group = [Security.Principal.NTAccount]"contoso\MyGroup"

$rread = New-Object Security.AccessControl.FileSystemAccessRule($everyone,"Read","ContainerInherit,ObjectInherit","None", "Allow")
$rwrite = New-Object Security.AccessControl.FileSystemAccessRule($everyone,"Write","ContainerInherit,ObjectInherit","None","Allow")
$rgmod = New-Object Security.AccessControl.FileSystemAccessRule($group,"Modify","ContainerInherit,ObjectInherit","None","Allow")

$share = "\\server\share"

Import-Csv folders.csv -Delimiter ";" |
        Foreach {
                $sub = "$share\$($_.name)\$($_.subshare)"
                $per = "$share\$($_.name)\$($_.subpersonal)"
                if(md $sub,$per)
                {
                        $acl = Get-Acl "$share\$($_.name)"
                        $acl.AddAccessRule($rread) | Out-Null
                        $acl | Set-Acl "$share\$($_.name)"
                        $acl = Get-Acl $sub
                        $acl.AddAccessRule($rwrite) | Out-Null
                        $acl | Set-Acl $sub
                        $acl = Get-Acl $per
                        $acl.SetAccessRuleProtection($true,$false)
                        $acl.AddAccessRule($rgmod) | Out-Null
                        $acl | Set-Acl $per
                }
        }


APermyakov@twitter 20-07-2012 09:30 1955245

Только дошли руки до этого скрипта.
начал им пользоваться. А как сделать так что бы папка name расшаривалась?

APermyakov@twitter 20-07-2012 09:50 1955268

и еще заметил что на папку subshare права безопасности наследуют, а на папку subpersonal нет. как можно сделать наследованные права.

Kazun 20-07-2012 09:54 1955276

$acl.SetAccessRuleProtection($true,$false) - убрать снятие наследования

Как расшарить - http://blog.wadmin.ru/2012/07/powershell-manage-shares/

Лично по мне,так проще воспользоваться утилитой net share /?

cepbl4 26-02-2017 16:31 2714929

вопрос смежной тематики
Дали скрипт
Код:

Get-Content file.txt | ForEach-Object {New-Item $_ -type file -force}
он по строчкам из текстового файла создает файлы

меняю file на directory, а папки не хочет создавать
Код:

Get-Content file.txt | ForEach-Object {New-Item $_ -type directory -force}
http://joxi.ru/L21lGz4CbDDKmX

ЧЯДНТ?

Iska 26-02-2017 17:16 2714942

Цитата:

Цитата cepbl4
ЧЯДНТ? »

Забыли предварительно удалить только что созданные одноимённые файлы.


Время: 03:59.

Время: 03:59.
© OSzone.net 2001-