Agence web » Actualités du digital » Comment transférer des autorisations de fichiers avec PowerShell

Comment transférer des autorisations de fichiers avec PowerShell

Le maintien des autorisations de partage de fichiers sur les serveurs peut être un défi majeur, mais en utilisant PowerShell, nous pouvons automatiser ce processus vous permettant de rentrer tôt.

Lorsque vous effectuez une migration de fichier, vous devez non seulement prendre en compte les fichiers et le dossier eux-mêmes, mais également les autorisations définies sur ces objets. Sur chaque fichier et dossier pourrait potentiellement être un ensemble différent d'entrées de contrôle d'accès (ACE) qui constituent une liste de contrôle d'accès (ACL). Selon le nombre de fichiers que vous migrez, cela peut être beaucoup.

Lorsque vous déplacez des fichiers vers un nouvel emplacement, les autorisations ne les accompagnent pas toujours. Lorsque vous effectuez une migration massive comme des serveurs de fichiers entiers avec des autorisations complexes en place, il est important de conserver ces autorisations avec les objets lorsqu'ils se déplacent vers le nouvel emplacement.

Il y a quelques façons de le faire.

Un outil préféré pour effectuer des migrations de fichiers est robocopie. Robocopie est un excellent outil avec beaucoup de cloches et de sifflets, mais il peut être compliqué à utiliser et peut ne pas fonctionner dans toutes les situations. Lorsque cela se produit, j'examine généralement un outil appelé icacls. C’est un outil qui existe depuis longtemps et, comme robocopie, a beaucoup de commutateurs, alors simplifions un peu cet outil avec PowerShell.

Utilisation de PowerShell pour transférer des autorisations

Bien que vous puissiez utiliser l'utilitaire de ligne de commande icacls directement, ce n'est pas le plus facile à comprendre. Pour y remédier, vous allez découvrir un PowerShell en tant que wrapper pour appeler le icacls outil pour simplifier ce processus parfois intimidant.

Tout d'abord, nous devons télécharger un outil existant déjà créé pour nous. L'un des grands avantages de la communauté PowerShell est qu'il existe généralement un outil existant pour nous aider. Dans ce cas, nous allons avoir besoin d'un module PowerShell. Ce module PowerShell se trouve dans la galerie PowerShell.

Si vous disposez de PowerShell v4 ou version ultérieure, vous disposez déjà de certaines commandes pour récupérer rapidement ce module.

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

Une fois le code ci-dessus terminé, vous devriez maintenant avoir un nouveau module installé sur votre ordinateur disponible pour utilisation. Une fois cette installation terminée, nous devons maintenant exécuter une commande à l'intérieur du module sur le dossier contenant tous les fichiers sur lesquels nous aimerions transférer les autorisations.

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

Une fois que cela est exécuté, vous devriez voir une sortie similaire à celle-ci et commencer à voir que le fichier de sauvegarde commence à croître.

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

Une fois cette opération terminée, vous devez maintenant disposer de toutes les autorisations pour les fichiers et dossiers à l'intérieur du fichier d'enregistrement. Maintenant, nous pouvons restaurer ce fichier. Avant cela, assurez-vous de faire un exact copie de tous les fichiers à l'intérieur de l'ancien dossier, sinon cela ne fonctionnera pas.

Pour restaurer les autorisations sur le nouveau chemin de dossier, nous utiliserions maintenant le Restore-Acl commander.

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

Une fois cette opération terminée, toutes les autorisations NTFS doivent être mises en miroir à partir de votre dossier source et du nouveau dossier de destination!

Sommaire

L'utilisation d'un module PowerShell communautaire gratuit et d'un peu de magie de script peut transformer une tâche intimidante de déplacement des autorisations NTFS d'un serveur à un autre un morceau de gâteau.