Question Affiche sous-dossier et ACL

Plus d'informations
il y a 12 ans 1 mois #11255 par Thomas
Affiche sous-dossier et ACL a été créé par Thomas
Bonjour à tous et à toutes.

Voilà pour mon entreprise, avec un collègue, nous voulons passer notre AD et les droits au dossier à la norme AGDLP Microsoft. (pour la petite histoire)

Je voulais dons commencer par un script qui sur un répertoire donné afficherais les sous-répertorie (et les sous sous répertoire), avec les ACLs (NTFS).

Je commence juste en powershell et après quelques multitudes de tentatives je n'arrive pas à faire ce que je souhaite.

L'affichage en question ressemblerais à ça

[groupes] [droits d'accès] [chemin du répertoire]

Malheureusement je n'arrive pas à faire cela comme ça.

les commandes que j'ai essayé sont :

[code:1]
Get-ChildItem C:\Users\Thomas -recurse -exclude \"*.*\" | Get-Acl | more

Get-ChildItem C:\Users\Thomas -Name -recurse -exclude \"*.*\" | Get-Acl | Format-list path,access

Get-ChildItem C:\Users\Thomas -Name -recurse -exclude \"*.*\" | Get-Acl | Format-custom path,access -Depth 2 -GroupBy path
[/code:1]

A chaques fois les colones sont tronqués, je ne sais pas comment les agrandirs.
De plus au niveau du chemin d'accès j'ai tout le temps un
[code:1]Microsoft.PowerShell.Core\FileSystem:[/code:1]
Que je n'arrive pas à enlever.

pareil au niveau de la colonne accesse
[code:1]{System.Security.AccessControl.FileSystemAccessRule,[/code:1]

En faite je voudrais juste quelques choses du types
groupes droits Chemin
USERS_ACCES R-W-X c:\dossier\dossier1
...

Je ne sais pas si ceci est possible ?

Merci d'avances

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 12 ans 1 mois #11256 par Gaga
Réponse de Gaga sur le sujet Re:Affiche sous-dossier et ACL
Salut,

J'ai fait rapide une fonction qui liste les droits que tu demandes sur un répertoire. Au début je suis parti sur une commande avec des pipe, mais ma commande avait 2 km de long ....:blink:.... s'il y en a qui arrrive à faire une commande qui tient sur une ligne je suis preneur !!

[code:1]Function droits
{ param([string]$path, [switch]$recurse )

if ($recurse) { $listRep = get-childitem -recurse $path | Where {$_.psIsContainer} }
else { $listRep = get-childitem $path | Where {$_.psIsContainer} }

foreach ($rep in $listRep)
{
$chemin=$rep.fullname
$droit=get-acl $chemin
$access=$droit.access

foreach ($element in $access)
{
$obj = New-Object PSobject

Add-Member -InputObject $obj -MemberType NoteProperty -name chemin -value $chemin
Add-Member -InputObject $obj -MemberType NoteProperty -name IdentityReference -value $element.IdentityReference
Add-Member -InputObject $obj -MemberType NoteProperty -name FileSystemRights -value $element.FileSystemRights
Add-Member -InputObject $obj -MemberType NoteProperty -name AccessControlType -value $element.AccessControlType

$obj
}
}
}

exemple :
droits -path Z:\PowerShell
droits -path Z:\PowerShell -recurse

export dans un fichier .csv :
droits -path Z:\PowerShell -recurse | Export-Csv -Path .\export.txt -NoTypeInformation -Delimiter ';' -encoding UTF8
[/code:1]

Amélioration à apporter :
- accepter des objets répertoires en entrée
- faire des contrôles sur les paramètres
- blinder le code

Je vous ai mis ci-dessous la commande \"équivalente\" :

[code:1]gci Z:\PowerShell -recurse | where { $_.psiscontainer } | Get-Acl | foreach { $a=$_.path ; $_.access | select @{e={$a};n='Répertoire'},@{e={$_.IdentityReference};n='User'},@{e={$_.AccessControlType};n='acces'},@{e={$_.FileSystemRights};n='droits'}}[/code:1]

Rques : dans la commande à la fin, je n'arrive pas à récupérer le fullname du répertorie mais seulement \&quot;Microsoft.PowerShell.Core\FileSystem::Z:\Powershell\&quot;<br><br>Message édité par: Gaga, à: 4/03/12 21:45

Connexion ou Créer un compte pour participer à la conversation.

Temps de génération de la page : 0.063 secondes
Propulsé par Kunena