Obtenir les autorisations d’un fichier ou d’un dossier à l’aide de PowerShell

La cmdlet Get-Acl du module de sécurité de PowerShell (Microsoft.PowerShell.Security) fait un excellent travail pour obtenir les autorisations d’un fichier ou d’un dossier (alias la liste de contrôle d’accès ou ACL). Mais obtenir des informations utiles à partir de la sortie par défaut peut demander un peu d’habitude.

Au lieu de cela, il serait formidable de pouvoir simplement voir ce que l’onglet Sécurité d’un fichier, d’un dossier ou d’une autre ressource affiche, mais sans avoir à passer par l’interface utilisateur de l’explorateur de fichiers et de multiples clics.


Figure 1 : Onglet Sécurité d’un dossier dans l’explorateur de Windows

Une seule ligne : Obtenir les autorisations d’un fichier ou d’un dossier

Voici un one-liner pour faire exactement cela :

(get-acl <nom du dossier>).access | ft IdentityReference,FileSystemRights,AccessControlType,IsInherited,InheritanceFlags -auto

La sortie:

La fonction Get-Permissions

Vous voulez rendre la sortie plus lisible ? Voici une fonction PowerShell qui utilise des étiquettes personnalisées (titres dans chaque colonne du tableau).

Vous pouvez soit l’enregistrer en tant que script PowerShell, soit l’ajouter à votre profil PowerShell afin qu’elle soit toujours disponible.

123456789
 function Get-Permissions ($folder) { (get-acl $folder).access | select `@{Label="Identity";Expression={$_.IdentityReference}}, `@{Label="Right";Expression={$_.FileSystemRights}}, `@{Label="Access";Expression={$_.AccessControlType}}, `@{Label="Inherited";Expression={$_.IsInherited}}, `@{Label="Drapeaux d'héritage";Expression={$_.InheritanceFlags}}, `@{Label="Drapeaux de propagation";Expression={$_.PropagationFlags}}. | ft -auto}

Vous pouvez omettre les deux propriétés liées à l’héritage si vous n’avez pas besoin de cette information.

Maintenant, vous pouvez utiliser Get-Permissions avec le nom du dossier :

Get-Permissions c:\mon-dossier

La sortie :

Vous pouvez également canaliser la sortie des commandes dir, ls ou gci, qui sont toutes des alias PowerShell pour la cmdlet Get-ChildItem.

dir <chemin> | % {Get-Permissions -chemin $_.fullname}

Une fonction pour ouvrir les propriétés du fichier ou du dossier dans l’explorateur

Si vous aimez vraiment voir les permissions dans l’interface graphique de l’explorateur de fichiers, vous pouvez utiliser cette fonction pour ouvrir la page Propriétés > générales du fichier ou du dossier. (Je n’ai pas trouvé de moyen d’ouvrir directement l’onglet Sécurité. Si vous savez comment faire, veuillez partager dans les commentaires du post).

12345678910111213141516171819202122
fonction Get-Properties ($path) {#exit if path not founddif (-not ($path | Test-Path)) { Write-Host "$path not found. Veuillez spécifier un chemin de fichier ou de dossier valide." -foregroundcolor red return } $o = new-object -com Shell.Application$item = get-item $path if ($item.gettype() -eq ) {write-host "Found folder $path... Getting properties"$fso = $o.Namespace("$path")$fso.self.InvokeVerb("properties") } if ($item.gettype() -eq ){write-host "Found file $path.... Getting properties"$fso = $o.Namespace($item.directoryname)$file = $fso.parsename($item.pschildname)$file.InvokeVerb("properties")}}

Maintenant, il suffit d’utiliser Get-Properties <Dossier du nom du fichier> pour ouvrir rapidement la page des propriétés du fichier ou du dossier à partir du shell.


Figure 2 : Utilisez la fonction Get-Properties pour ouvrir rapidement les propriétés d’un fichier ou d’un dossier depuis PowerShell

Module PowerShell de sécurité du système de fichiers

Microsoft PFE Raimund Andrée a publié le module PowerShell de sécurité du système de fichiers il y a quelque temps. Il ajoute quelques cmdlets utiles pour gérer les permissions du système de fichiers à l’aide de PowerShell. Consultez également les articles correspondants de son blog Weekend Scripter : Utiliser PowerShell pour obtenir, ajouter et supprimer des permissions NTFS et NTFSSecurity Tutorial 2 – Gérer l’héritage NTFS et utiliser les privilèges.

Tags
PowerShell Scripts Sécurité Windows

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.