Cómo transferir permisos de archivo con PowerShell – CloudSavvy IT

Logotipo de Powershell

Mantener los permisos para compartir archivos en todos los servidores puede ser un desafío importante, pero al usar PowerShell, podemos automatizar este proceso permitiéndole volver a casa temprano.

Al realizar una migración de archivos, no solo debe tener en cuenta los archivos y la carpeta en sí, sino también los permisos establecidos en esos objetos. En cada archivo y carpeta podría haber un conjunto diferente de Entradas de control de acceso (ACE) que componen una Lista de control de acceso (ACL). Dependiendo de la cantidad de archivos que esté migrando, esto puede ser mucho.

Al mover archivos a una nueva ubicación, los permisos no siempre vienen con ellos. Al realizar una migración masiva, como servidores de archivos completos con permisos intrincados, es importante mantener esos permisos con los objetos a medida que se mueven a la nueva ubicación.

Hay algunas formas de hacer esto.

Una herramienta favorita para realizar migraciones de archivos es robocopia. Robocopia es una gran herramienta con muchas campanas y silbidos, pero puede ser complicado de usar y puede que no funcione en todas las situaciones. Cuando esto sucede, normalmente busco una herramienta llamada icacls. Esta es una herramienta que existe desde hace mucho tiempo y, como robocopia, tiene muchos interruptores, así que simplifiquemos un poco esta herramienta con algo de PowerShell.

Usar PowerShell para transferir permisos

Aunque puede usar la utilidad de línea de comandos icacls directamente, no es la más fácil de entender. Para remediar esto, aprenderá acerca de PowerShell como contenedor para invocar el icacls herramienta para simplificar este proceso a veces abrumador.

Primero, necesitaremos descargar una herramienta existente que ya fue creada para nosotros. Una de las mejores cosas de la comunidad de PowerShell es que, por lo general, existe una herramienta para ayudarnos. En este caso, necesitaremos un módulo de PowerShell. Este módulo de PowerShell se puede encontrar en el Galería de PowerShell.

Si tiene PowerShell v4 o posterior, ya tendrá algunos comandos para tomar este módulo rápidamente.

PS> Find-Module -Name NTFSPermissionMigration | Install-Module

Una vez que haya terminado el código anterior, ahora debería tener un nuevo módulo instalado en su computadora disponible para su uso. Una vez que se realiza esta instalación, ahora necesitamos ejecutar un comando dentro del módulo en la carpeta que contiene todos los archivos a los que nos gustaría transferir permisos.

PS> Save-Acl -FolderPath \\OLDSERVER\FileShare -SaveFilePath C:\FilePermissions.txt

Una vez que se ejecuta, debería ver una salida similar a esta y comenzar a ver que el archivo guardado comienza a crecer.

processed file: \\OLDSERVER\FileShare\File1.txt
processed file: \\OLDSERVER\FileShare\File2.exe
Successfully processed X files; Failed processing 0 files

Cuando esto esté completo, ahora debería tener todos los permisos para los archivos y carpetas dentro del archivo guardado. Ahora, podemos restaurar este archivo. Sin embargo, antes de que esto suceda, asegúrese de hacer una exacto copia de todos los archivos dentro de la carpeta anterior; de lo contrario, esto no funcionará.

Para restaurar los permisos a la nueva ruta de carpeta, ahora usaríamos el Restore-Acl mando.

PS> Restore-Acl -RestoreToFolderPath \\NEWFILESERVER\FileShare -PermissionFilePath C:\FilePermissions.txt
Successfully processed XXX files; Failed processing 0 files

Una vez que esto esté completo, ¡todos los permisos NTFS deben reflejarse desde su carpeta de origen y la nueva carpeta de destino!

Resumen

El uso de un módulo gratuito de PowerShell de la comunidad y un poco de magia de secuencias de comandos puede convertir la tarea abrumadora de mover los permisos NTFS de un servidor a otro en un juego de niños.

Deja un comentario

En esta web usamos cookies para personalizar tu experiencia de usuario.    Política de cookies
Privacidad