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