Загрузка данных


# Создание \\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
}