IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Scripts/Batch Discussion :

Liste des ACL des dossiers vers un CSV : OK mais..


Sujet :

Scripts/Batch

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Mars 2006
    Messages
    36
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 36
    Par défaut Liste des ACL des dossiers vers un CSV : OK mais..
    Bonjour,

    Je cherche à extraire les ACL des dossiers et sous-dossiers d'un serveur et récupérer le résultat dans un CSV.

    Pour cela j'ai trouvé le script suivant qui fonctionne bien :

    Code PowerShell : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Get-childitem "\\serveur\dossier\" -recurse | where{$_.psiscontainer} |
    Get-Acl | % {
        $path = $_.Path
        $_.Access | % {
            New-Object PSObject -Property @{
                Folder = $path.Replace("Microsoft.PowerShell.Core\FileSystem::","")
                Access = $_.FileSystemRights
                Control = $_.AccessControlType
                User = $_.IdentityReference
                Inheritance = $_.IsInherited
                }
            }
        } | select-object -Property User, Access, Folder | export-csv d:\output.csv -force


    J'ai par exemple comme résultat :

    CREATEUR PROPRIETAIRE,"FullControl","\\serveur\dossier"
    AUTORITE NT\Syst?me,"FullControl","\\serveur\dossier"
    BUILTIN\Administrateurs,"FullControl","\\serveur\dossier"
    domaine\user1,"Modify, Synchronize","\\serveur\dossier"
    domaine\user2,"FullControl","\\serveur\dossier"
    domaine\user3,"Modify, Synchronize","\\serveur\dossier"
    etc...
    Je voudrais que certains utilisateurs ne soient pas pris en compte dans les résultats, dans l'exemple il faudrait ne pas prendre en compte : CREATEUR PROPRIETAIRE, AUTORITE NT\Syst?me et BUILTIN\Administrateurs.

    Avez-vous une idée ??

    Merci par avance.

  2. #2
    Expert confirmé

    Homme Profil pro
    Responsable déploiement (SCCM, InTune, GPO)
    Inscrit en
    Juillet 2014
    Messages
    3 218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Responsable déploiement (SCCM, InTune, GPO)
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2014
    Messages : 3 218
    Par défaut
    Je ferais comme ceci.

    Ps : Je hais les alias !

    Code powershell : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    $UsersExclude = "BUILTIN\Administrateurs", "CREATEUR PROPRIETAIRE", "AUTORITE NT\Système"
    $dossier = "\\serveur\dossier\"
     
    Get-ChildItem -Path $dossier -Recurse | Where-Object {$_.PSIsContainer} | Get-Acl | Select-Object -Property @{Name = 'Folder'; Expression = {Convert-Path -Path $_.Path}} -ExpandProperty Access | 
        Where-Object {$UsersExclude -notcontains $_.IdentityReference} | 
        Select-Object -Property @{Name = 'User'; Expression = {$_.IdentityReference}}, @{Name = 'Access'; Expression = {$_.FileSystemRights}}, Folder | 
        Export-Csv -Path "d:\output.csv" -Force

  3. #3
    Membre averti
    Inscrit en
    Mars 2006
    Messages
    36
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 36
    Par défaut
    Merci ericlm128 !! c'est bcp mieux

    Par contre je dois avoir un pb d'encodage, pour le user "AUTORITE NT\Système", il apparait dans le csv :

    "AUTORITE NT\Syst?me","FullControl","\\serveur\dossier"


    et je voudrais aussi enlever les deux premières lignes du csv qui sont :

    #TYPE Selected.System.Security.AccessControl.FileSystemAccessRule
    "User","Access","Folder"


    et une dernière requête, je voudrais enlever le nom du domaine dans le résultat, par défaut j'ai :

    "domaine\USER1","Modify, Synchronize","\\serveur\dossier"


    Est-ce possible stp ?

  4. #4
    Membre averti
    Inscrit en
    Mars 2006
    Messages
    36
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 36
    Par défaut
    Pour le user "AUTORITE NT\Système" c'est bon j'ai trouvé, sous notepad++ j'ai converti mon script ps1 en ANSI, il était en UTF8.

    Pour enlever le domaine j'ai testé diverses combinaisons avec .Replace ("domaine\","") : sans succès...

  5. #5
    Expert confirmé

    Homme Profil pro
    Responsable déploiement (SCCM, InTune, GPO)
    Inscrit en
    Juillet 2014
    Messages
    3 218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Responsable déploiement (SCCM, InTune, GPO)
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2014
    Messages : 3 218
    Par défaut
    je voudrais enlever le nom du domaine dans le résultat, par défaut j'ai :

    "domaine\USER1","Modify, Synchronize","\\serveur\dossier"
    Ceci est aussi valable pour BUILTIN, AUTORITE NT .. ?

  6. #6
    Expert confirmé

    Homme Profil pro
    Responsable déploiement (SCCM, InTune, GPO)
    Inscrit en
    Juillet 2014
    Messages
    3 218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Responsable déploiement (SCCM, InTune, GPO)
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2014
    Messages : 3 218
    Par défaut
    On pourrait aussi se dire qu'il serait mieux d'adapter les noms d'exclusion des utilisateurs pour qu'il ressemble à la sortie. Qu'en pense tu ?

    Code powershell : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    $UsersExclude = "BUILTIN\Administrateurs", "CREATEUR PROPRIETAIRE", "AUTORITE NT\Système"
    $dossier = ""\\serveur\dossier\""
     
    Get-ChildItem -Path $dossier -Recurse | Where-Object {$_.PSIsContainer} | Get-Acl | Select-Object -Property @{Name = 'Folder'; Expression = {Convert-Path -Path $_.Path}} -ExpandProperty Access | 
        Where-Object {$UsersExclude -notcontains $_.IdentityReference} | 
        Select-Object -Property @{Name = 'User'; Expression = {$_.IdentityReference -replace ".*\\", ""}}, @{Name = 'Access'; Expression = {$_.FileSystemRights}}, Folder | 
        ConvertTo-Csv -NoTypeInformation | Select-Object -Skip 1 | Set-Content -Path "d:\output.csv" -Encoding Default -Force

Discussions similaires

  1. Liste des dossier répertoire
    Par cjacquel dans le forum MFC
    Réponses: 2
    Dernier message: 26/11/2007, 14h34
  2. Listes des dossiers personels d'Outlook
    Par MedGIR dans le forum Web & réseau
    Réponses: 4
    Dernier message: 03/07/2007, 11h16
  3. OpenDialog avec une liste des dossiers favories
    Par J_apprenti dans le forum Delphi
    Réponses: 6
    Dernier message: 09/05/2007, 22h23
  4. Liste des dossier
    Par krfa1 dans le forum Langage
    Réponses: 2
    Dernier message: 10/10/2006, 20h49

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo