Script PS de ACL - trava no 08 R2 PS v3; funciona bem no W8 PS v4

1

Este script foi projetado para tornar a aplicação de permissões para um novo servidor muito mais fácil. Não está fazendo isso atualmente: (

Por alguma razão, funciona muito bem na minha máquina Win 8, onde eu fiz isso. Quando eu o executo na máquina de destino, um servidor 2008 R2, ele simplesmente trava no primeiro diretório.

Não tenho certeza se a versão PS é importante demais entre a v3 e a v4 - o script é bastante simples: - A caixa do Windows Server 2008 R2 é o PowerShell v3 - A caixa do Windows 8 é PowerShell v4

Alguém sabe por que isso pode ser?

$csvFile = Read-Host "path to the CSV file with permissions"
$csv = Import-Csv $csvFile

Write-Host "Imported CSV File"

function applyPermissions {
    Param(
        [string]$Permission,
        [string]$Group,
        [string]$Dir,
        [bool]$Enclosed
    )

    if ($Enclosed) {
        $rule = New-Object System.Security.AccessControl.FileSystemAccessRule($Group,$Permission,"ObjectInherit, ContainerInherit","None","Allow")
        $Dir = $Dir.Replace("\*","")
        $acl = Get-Acl $Dir
        $acl.SetAccessRule($rule)
        Set-Acl $Dir $acl
    }
    else {
        $rule = New-Object System.Security.AccessControl.FileSystemAccessRule($Group,$Permission,"ObjectInherit","NoPropagateInherit","Allow")
        $acl = Get-Acl $Dir
        $acl.SetAccessRule($rule)
        Set-Acl $Dir $acl
    }
}

foreach ($r in $csv) {
    Write-Host "Processing: $r"

    $perm = $r.Permission
    $grp = $r.Group
    $dr = $r.Path

    # enclosed needs to apply recursively
    $enc = $false
    if($dr -match "\*") { $enc = $true } else { $enc = $false }

    if ($perm -eq "ReadWrite") {
        applyPermissions  -Permission "ReadAndExecute, Write" -Group $grp -Dir $dr -Enclosed $enc
    }
    else {
        applyPermissions -Permission $perm -Group $grp -Dir $dr -Enclosed $enc
    }
}

EDITAR:

  • Depois de adicionar alguns pontos de interrupção no ISE, posso ver que ele fica preso na parte Set-Acl na função applyPermissions

  • Aparentemente, não há saída em eventvwr relacionada a qualquer problema / causa para o powershell pendurado neste comando

por johnnygear 31.03.2014 / 10:27

0 respostas