PDA

Показать полную графическую версию : [решено] Создание папок и подпапок из csv


APermyakov@twitter
10-07-2012, 10:29
Начал изучение PowerShell и пока есть трудности.

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

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

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

Kazun
10-07-2012, 13:34
Import-Csv folders.csv -Delimiter ";" |
Foreach {md "\\server\share\$($_.name)\$($_.subshare)","\\server\share\$($_.name)\$($_.subpersonal)"}

Molchune
10-07-2012, 14:05
Ну в принципе тоже самое
$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
большое спасибо!

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

Kazun
11-07-2012, 10:05
$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
Только дошли руки до этого скрипта.
начал им пользоваться. А как сделать так что бы папка name расшаривалась?

APermyakov@twitter
20-07-2012, 09:50
и еще заметил что на папку subshare права безопасности наследуют, а на папку subpersonal нет. как можно сделать наследованные права.

Kazun
20-07-2012, 09:54
$acl.SetAccessRuleProtection($true,$false) - убрать снятие наследования

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

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

cepbl4
26-02-2017, 16:31
вопрос смежной тематики
Дали скрипт
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
ЧЯДНТ? »
Забыли предварительно удалить только что созданные одноимённые файлы.




© OSzone.net 2001-2012