$sourcePath = "U:\1-PROYECTOS\593 Cacique Residences"

$destPath = "C:\CVT\Archivos\Proyectos\593 Cacique Residences"


# Verificar si la carpeta de destino existe

if (!(Test-Path $destPath)) {

    Write-Host "❌ La carpeta de destino no existe: $destPath" -ForegroundColor Red

    exit

}


# Obtener y aplicar permisos a la carpeta principal

try {

    $sourceAcl = Get-Acl -Path $sourcePath -ErrorAction Stop

    Set-Acl -Path $destPath -AclObject $sourceAcl -Verbose

    Write-Host "✅ Permisos aplicados a la carpeta principal correctamente." -ForegroundColor Green

} catch {

    Write-Host "❌ Error al aplicar permisos en la carpeta principal: $_" -ForegroundColor Red

}


# Aplicar permisos a todas las subcarpetas y archivos

Get-ChildItem -Path $sourcePath -Recurse | ForEach-Object {

    try {

        $itemAcl = Get-Acl -Path $_.FullName -ErrorAction Stop

        $destItemPath = Join-Path -Path $destPath -ChildPath $_.FullName.Substring($sourcePath.Length).TrimStart("\")

        

        if (Test-Path $destItemPath) {  

            Write-Host "? Aplicando permisos a: $destItemPath" -ForegroundColor Yellow

            Set-Acl -Path $destItemPath -AclObject $itemAcl -Verbose

            Write-Host "✅ Permisos aplicados a: $destItemPath" -ForegroundColor Green

        } else {

            Write-Warning "⚠️ No se encontró en destino: $destItemPath"

        }

    } catch {

        Write-Error "❌ Error con: $_.FullName - $_"

    }

}