Загрузка данных
# Создание \\difc.bcs\FS\Home\Dubai\Papka_1 и выдача Modify группе Group1
$ErrorActionPreference = 'Stop'
$group = "DOMAIN\Group1" # ← замените DOMAIN на имя вашего домена, например DIBC\Group1
$rootPath = "\\difc.bcs\FS\Home\Dubai"
$folder = "Papka_1"
$target = Join-Path -Path $rootPath -ChildPath $folder
# 1. Создаём папку, если её ещё нет
if (-not (Test-Path -LiteralPath $target)) {
New-Item -Path $target -ItemType Directory -Force | Out-Null
Write-Host "Папка создана: $target" -ForegroundColor Green
} else {
Write-Host "Папка уже существует: $target" -ForegroundColor Yellow
}
# 2. Настраиваем права (Modify + наследование на подпапки и файлы)
$acl = Get-Acl -LiteralPath $target
$rights = [System.Security.AccessControl.FileSystemRights]::Modify
$inheritance = [System.Security.AccessControl.InheritanceFlags]::ContainerInherit -bor
[System.Security.AccessControl.InheritanceFlags]::ObjectInherit
$propagation = [System.Security.AccessControl.PropagationFlags]::None
$accessType = [System.Security.AccessControl.AccessControlType]::Allow
# Удаляем предыдущие правила Allow/Deny для этой группы (чтобы не дублировались)
$acl.Access | Where-Object { $_.IdentityReference.Value -ieq $group } |
ForEach-Object { [void]$acl.RemoveAccessRule($_) }
$rule = New-Object System.Security.AccessControl.FileSystemAccessRule(
$group, $rights, $inheritance, $propagation, $accessType
)
$acl.AddAccessRule($rule)
Set-Acl -LiteralPath $target -AclObject $acl
Write-Host "Права Modify выданы группе $group на $target" -ForegroundColor Green
# Создание \\difc.bcs\FS\Group\Dubai\Staff\Papka_2 и вложенных папок,
# выдача Read права группе Group2 (и на саму Papka_2, и на все вложенные)
$ErrorActionPreference = 'Stop'
$group = "DOMAIN\Group2" # ← замените DOMAIN на имя вашего домена, например DIBC\Group2
$rootPath = "\\difc.bcs\FS\Group\Dubai\Staff"
$folder = "Papka_2"
$target = Join-Path -Path $rootPath -ChildPath $folder
$subFolders = @(
'Employment',
'Documents',
'Payslips',
'Performance files',
'Other document'
)
# 1. Создаём Papka_2
if (-not (Test-Path -LiteralPath $target)) {
New-Item -Path $target -ItemType Directory -Force | Out-Null
Write-Host "Папка создана: $target" -ForegroundColor Green
} else {
Write-Host "Папка уже существует: $target" -ForegroundColor Yellow
}
# 2. Создаём вложенные папки
foreach ($sub in $subFolders) {
$subPath = Join-Path -Path $target -ChildPath $sub
if (-not (Test-Path -LiteralPath $subPath)) {
New-Item -Path $subPath -ItemType Directory -Force | Out-Null
Write-Host "Создана вложенная папка: $subPath" -ForegroundColor Green
} else {
Write-Host "Вложенная папка уже существует: $subPath" -ForegroundColor Yellow
}
}
# 3. Функция выдачи Read-прав с наследованием
function Grant-ReadAccess {
param([string]$Path, [string]$ADGroup)
$acl = Get-Acl -LiteralPath $Path
$rights = [System.Security.AccessControl.FileSystemRights]::Read
$inheritance = [System.Security.AccessControl.InheritanceFlags]::ContainerInherit -bor
[System.Security.AccessControl.InheritanceFlags]::ObjectInherit
$propagation = [System.Security.AccessControl.PropagationFlags]::None
$accessType = [System.Security.AccessControl.AccessControlType]::Allow
# Очистка старых правил группы (чтобы не накапливались дубли)
$acl.Access | Where-Object { $_.IdentityReference.Value -ieq $ADGroup } |
ForEach-Object { [void]$acl.RemoveAccessRule($_) }
$rule = New-Object System.Security.AccessControl.FileSystemAccessRule(
$ADGroup, $rights, $inheritance, $propagation, $accessType
)
$acl.AddAccessRule($rule)
Set-Acl -LiteralPath $Path -AclObject $acl
}
# 4. Выдаём Read на саму Papka_2
Grant-ReadAccess -Path $target -ADGroup $group
Write-Host "Права Read выданы группе $group на $target" -ForegroundColor Green
# 5. Выдаём Read на каждую вложенную папку
foreach ($sub in $subFolders) {
$subPath = Join-Path -Path $target -ChildPath $sub
Grant-ReadAccess -Path $subPath -ADGroup $group
Write-Host "Права Read выданы группе $group на $subPath" -ForegroundColor Green
}