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 :

Probleme de Droit et proprietaire sur repertoires Users [PowerShell]


Sujet :

Scripts/Batch

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Mars 2018
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2018
    Messages : 5
    Par défaut Probleme de Droit et proprietaire sur repertoires Users
    Bonjour

    afin de faire réaffecter des utilisateurs de l'AD sur les répertoires Personnel avec les bons Droits
    je doit parcourir le répertoire \\serveur\USERS et casser les droits pour bien les remettre

    les droits au niveau des répertoires sont fait par héritages
    en le faisant a la main cela fonctionne mais sur 6000 répertoires cela est très fastidieux

    mon problème est que le propriétaire du répertoire initiale $proprio.Owner n'est pas récupérer mais que mon compte admin apparait comme étant le propriétaire empêchant le propriétaire légitime de saisir quoi que ce soit

    exemple

    lvl1 = trucmuche
    lvl2 = trucmuche
    lvl 3+ = moi

    voici le code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    Import-Module -Name NTFSSecurity
    
    $Repertoire_Depart="\\serveur\USERS"
    
    $Liste_Objet_Niv1 = Get-ChildItem2 -Path $Repertoire_Depart -Directory
    
    forEach ($Dossier in $Liste_Objet_Niv1.fullname) {
        $Dossier = $Liste_Objet_Niv1.FullName
    
        $Error_acces = $false
    
        try {
           $proprio = Get-NTFSOwner -Path $Dossier
        } catch { $Error_acces = $true }
        If ($Error_acces -eq $false) {
            $Objet_Dossier = Get-Item2 $Dossier
    
            Write "*********************************************************************"
            Write "Traitement du Dossier $Objet_Dossier"
            # Attribution des Droit a l'Administrateur
    
            Write-host "Attribution de l'utilisateur Administrateur"
            Set-NTFSOwner -Account 'BUILTIN\Administrateurs' -Path $Objet_Dossier.FullName
            Get-ChildItem2 $Objet_Dossier -Recurse | Select-Object fullname | Set-NTFSOwner -Account 'BUILTIN\Administrateurs'
            
            # Suppression des Héritages
            Write-host "Suppression des Héritages"
            Disable-NTFSAccessInheritance -Path $Objet_Dossier.FullName -RemoveInheritedAccessRules
            Disable-NTFSAuditInheritance -Path $Objet_Dossier.FullName -RemoveInheritedAccessRules
          
            # Ajout acces Pour Admin
            Write-host "Ajout acces Pour Admin"
            Add-NTFSAccess -Path $Objet_Dossier.FullName -Account 'BUILTIN\Administrateurs' -AccessRights FullControl -AppliesTo ThisFolderSubfoldersAndFiles 
            Get-ChildItem2 $Objet_Dossier -Recurse | Select-Object fullname | Add-NTFSAccess -Account 'BUILTIN\Administrateurs' -AccessRights FullControl -AppliesTo ThisFolderSubfoldersAndFiles
      
          # Réaffectation Du Propriétaire
            Write-host "Réaffectation Du Propriétaire"
            Get-Item2 $Objet_Dossier | Select-Object fullname | Set-NTFSOwner -Account $proprio.Owner
            Get-ChildItem2 $Objet_Dossier -Recurse -Directory | Select-Object fullname | Set-NTFSOwner -Account $proprio.Owner
            Get-ChildItem2 $Objet_Dossier -Recurse -File | Select-Object fullname | Set-NTFSOwner -Account $proprio.Owner
    
            # Rétablissement de l'héritage
            Write-host "Rétablissement de l'héritage"
            Enable-NTFSAccessInheritance -Path $Objet_Dossier.FullName -RemoveExplicitAccessRules 
            Enable-NTFSAuditInheritance -Path $Objet_Dossier.FullName -RemoveExplicitAccessRules 
            Get-ChildItem2 $Objet_Dossier -Recurse -Directory | Select-Object fullname | Enable-NTFSAccessInheritance -RemoveExplicitAccessRules
            Get-ChildItem2 $Objet_Dossier -Recurse -Directory | Select-Object fullname | Enable-NTFSAuditInheritance -RemoveExplicitAccessRules
            Get-ChildItem2 $Objet_Dossier -Recurse -File | Select-Object fullname | Enable-NTFSAccessInheritance -RemoveExplicitAccessRules
            Get-ChildItem2 $Objet_Dossier -Recurse -File | Select-Object fullname | Enable-NTFSAuditInheritance -RemoveExplicitAccessRules
        }
    }
    merci pour votre aide

  2. #2
    Nouveau membre du Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Mars 2018
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2018
    Messages : 5
    Par défaut
    J'ai trouver la solution

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    
    Clear-host
    Import-Module -Name NTFSSecurity
    
    $stopwatch = [System.Diagnostics.Stopwatch]::StartNew()
    
    $Repertoire_Depart="\\serveur\USERS"
    
    $fic_csv = "\\serveur\USERS\fic.csv"
    Write-Output "Niveau;Dossier;Propriétaire;Access;Audit" | Out-file -FilePath $fic_csv
    
    $Liste_Objet_Niv1 = Get-ChildItem -Path $Repertoire_Depart -Directory
    
    forEach ($Dossier in $Liste_Objet_Niv1.fullname) {
        $Error_acces = $false
        try {
           $proprio = Get-NTFSOwner -Path $Dossier | Select-Object Owner -ExpandProperty Owner      
        } catch { $Error_acces = $true }
        If ($proprio.AccountName -eq "") { $proprio = $proprio.Owner.Sid 
        } else { $proprio = $proprio.Owner.AccountName }
        If ($Error_acces -eq $false) {
            Write-host "*********************************************************************"
            Write-host "Traitement du Répertoire $Dossier"
            Write-host "Proprio $proprio"       
            # Attribution des Droit a l'Administrateur
            Write-host "Attribution de l'utilisateur Administrateur"
            Set-NTFSOwner -Account 'BUILTIN\Administrateurs' -Path $Dossier
            # Suppression des Héritages
            Write-host "Suppression des Héritages"
            Add-NTFSAccess -Path $Dossier -Account 'BUILTIN\Administrateurs' -AccessRights FullControl -AppliesTo ThisFolderSubfoldersAndFiles 
            Disable-NTFSAccessInheritance -Path $Dossier -RemoveInheritedAccessRules
            $Objet_Dossier | Get-NTFSAudit | Remove-NTFSAudit
            Disable-NTFSAuditInheritance -Path $Dossier -RemoveInheritedAccessRules
            # Ajout acces Pour Admin
            Write-host "Ajout acces Pour Admin"
            Add-NTFSAccess -Path $Dossier -Account 'BUILTIN\Administrateurs' -AccessRights FullControl -AppliesTo ThisFolderSubfoldersAndFiles 
            # Réaffectation Du Propriétaire
            Write-host "Réaffectation Du Propriétaire"
            Set-NTFSOwner -Account $proprio -Path $Dossier
            # Rétablissement de l'héritage
            Write-host "Rétablissement de l'héritage"
            Enable-NTFSAccessInheritance -Path $Dossier -RemoveExplicitAccessRules
            Enable-NTFSAuditInheritance -Path $Dossier
            $proprio_effectif = Get-NTFSOwner -Path  $Dossier | Select-Object Owner -ExpandProperty Owner
            $héritage_access = Get-NTFSInheritance -Path  $Dossier | Select-Object AccessInheritanceEnabled -ExpandProperty AccessInheritanceEnabled
            $héritage_audit = Get-NTFSInheritance -Path  $Dossier | Select-Object AuditInheritanceEnabled -ExpandProperty AuditInheritanceEnabled
            If ($proprio -eq $proprio_effectif) { $proprio_Ok = $true 
            } else { $proprio_Ok = $false }
            Write-Output "Répertoire; $Dossier;$proprio_Ok;$héritage_access;$héritage_audit" | Out-file -FilePath $fic_csv -Append
    
            $Liste_Objet_Niv2 = Get-ChildItem $dossier -Recurse -Directory      
            forEach ($Dossier_Niv2 in $Liste_Objet_Niv2.fullname) {
                Write-host "Traitement du Sous-Répertoire : $Dossier_Niv2"
                Write-host "Proprio $proprio"           
                Write-host "Sous-Répertoire : Attribution de l'utilisateur Administrateur"
                Set-NTFSOwner -Account 'BUILTIN\Administrateurs' -path $Dossier_Niv2
                Write-host "Sous-Répertoire : Suppression des Héritages"
                Add-NTFSAccess -Path $Dossier_Niv2 -Account 'BUILTIN\Administrateurs' -AccessRights FullControl -AppliesTo ThisFolderSubfoldersAndFiles 
                Disable-NTFSAccessInheritance -Path $Dossier_Niv2 -RemoveInheritedAccessRules
                $Dossier_Niv2 | Get-NTFSAudit | Remove-NTFSAudit
                Disable-NTFSAuditInheritance -Path $Dossier_Niv2 -RemoveInheritedAccessRules
                # Ajout acces Pour Admin
                Write-host "Sous-Répertoire : Ajout acces Pour Admin"
                Add-NTFSAccess -Path $Dossier_Niv2 -Account 'BUILTIN\Administrateurs' -AccessRights FullControl -AppliesTo ThisFolderSubfoldersAndFiles 
                # Réaffectation Du Propriétaire
                Write-host "Sous-Répertoire : Réaffectation Du Propriétaire"
                Set-NTFSOwner -Account $proprio -path $Dossier_Niv2
                # Rétablissement de l'héritage
                Write-host "Sous-Répertoire : Rétablissement de l'héritage"
                Enable-NTFSAccessInheritance -Path $Dossier_Niv2 -RemoveExplicitAccessRules 
                Enable-NTFSAuditInheritance -Path $Dossier_Niv2
                $proprio_effectif = Get-NTFSOwner -Path  $Dossier_Niv2 | Select-Object Owner -ExpandProperty Owner
                $héritage_access = Get-NTFSInheritance -Path  $Dossier_Niv2 | Select-Object AccessInheritanceEnabled -ExpandProperty AccessInheritanceEnabled
                $héritage_audit = Get-NTFSInheritance -Path  $Dossier_Niv2 | Select-Object AuditInheritanceEnabled -ExpandProperty AuditInheritanceEnabled
                If ($proprio -eq $proprio_effectif) { $proprio_Ok = $true 
                } else { $proprio_Ok = $false }
                Write-Output "Sous-Répertoire; $Dossier_Niv2;$proprio_Ok;$héritage_access;$héritage_audit" | Out-file -FilePath $fic_csv -Append
    
                $Liste_Objet_Niv2_fic = Get-ChildItem $Dossier_Niv2 -File      
                forEach ($Dossier_Niv2_fic in $Liste_Objet_Niv2_fic.fullname) {
                    Write-Host "Traitement du Fichier : $Dossier_Niv2_fic"
                    Write-host "Proprio $proprio"
                    Write-host "Fichier : Attribution de l'utilisateur Administrateur"
                    Set-NTFSOwner -Account 'BUILTIN\Administrateurs' -path $Dossier_Niv2_fic
                    Write-host "Fichier: Suppression des Héritages"
                    Add-NTFSAccess -Path $Dossier_Niv2_fic -Account 'BUILTIN\Administrateurs' -AccessRights FullControl -AppliesTo ThisFolderSubfoldersAndFiles 
                    #Supression des Droits
                    Write-host "Fichier : Supression des Droits d'accès et d'Audit"
                    $Dossier_Niv2_fic | Get-NTFSAccess | Remove-NTFSAccess
                    $Dossier_Niv2_fic | Get-NTFSAudit | Remove-NTFSAudit
                    # Ajout acces Pour Admin
                    Write-host "Fichier : Ajout acces Pour Admin"
                    Add-NTFSAccess -Path $Dossier_Niv2_fic -Account 'BUILTIN\Administrateurs' -AccessRights FullControl -AppliesTo ThisFolderSubfoldersAndFiles 
                    # Réaffectation Du Propriétaire
                    Write-host "Fichier : Réaffectation Du Propriétaire"
                    Set-NTFSOwner -Account $proprio -path $Dossier_Niv2_fic
                    # Rétablissement de l'héritage
                    Write-host "Fichier : Rétablissement de l'héritage"
                    Enable-NTFSAccessInheritance -Path $Dossier_Niv2_fic -RemoveExplicitAccessRules 
                    Enable-NTFSAuditInheritance -Path $Dossier_Niv2_fic
                    $proprio_effectif = Get-NTFSOwner -Path $Dossier_Niv2_fic | Select-Object Owner -ExpandProperty Owner
                    $héritage_access = Get-NTFSInheritance -Path $Dossier_Niv2_fic | Select-Object AccessInheritanceEnabled -ExpandProperty AccessInheritanceEnabled
                    $héritage_audit = Get-NTFSInheritance -Path $Dossier_Niv2_fic | Select-Object AuditInheritanceEnabled -ExpandProperty AuditInheritanceEnabled
                    If ($proprio -eq $proprio_effectif) { $proprio_Ok = $true 
                    } else { $proprio_Ok = $false }
                    Write-Output "Fichier;$Dossier_Niv2_fic;$proprio_Ok;$héritage_access;$héritage_audit" | Out-file -FilePath $fic_csv -Append
                }
            }
        }
    }
    
    $stopwatch.stop()
    write-host "Temps d'exécution : "$stopwatch.Elapsed.Hours"H"$stopwatch.Elapsed.Minutes"M"$stopwatch.Elapsed.Seconds"S"
    il me reste un probleme encore sur l'audit mais c'est très mineur

  3. #3
    Membre chevronné
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Février 2012
    Messages
    281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Lot et Garonne (Aquitaine)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2012
    Messages : 281
    Par défaut
    salut ddray

    bien que les commandes modifient les droits Audits me semble inutile, ton script semble bon, sauf cette ligne qui est en trop (en ligne 8) :
    $Dossier = $Liste_Objet_Niv1.FullName

    de plus quand tu rétabli l'heritage tu casse tous ton travail de droits pour les remplacer par ceux du dossier parent
    il te faut changer ordre d'execution en mettent les access en dernier

    autre detail la désactivation et l'activation de l'heritage des droits est récursif, il est donc inutile de faire les get-childitem -recurse qui suive !!

    attention aux droits de l'utilisateur système, qui peut être bloquant pour certaine action, comme les sauvegarde !
    mais il est peut être sur le dossier de base "\\serveur\USERS" !!

    voila a quoi pourrais ressembler ton code après prise en compte de mes remarques :
    Code powershell : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    Import-Module -Name NTFSSecurity
     
    $Repertoire_Depart = "\\serveur\USERS"
     
    $Liste_Objet_Niv1 = Get-ChildItem2 -Path $Repertoire_Depart -Directory
     
    forEach ($Dossier in $Liste_Objet_Niv1.fullname) {
     
        $Error_acces = $false
     
        try {
            $proprio = Get-NTFSOwner -Path $Dossier
            }
        catch {
            $Error_acces = $true
            }
     
        If ($Error_acces -eq $false) {
            $Objet_Dossier = Get-Item2 $Dossier
     
            Write "*********************************************************************"
            Write "Traitement du Dossier $Objet_Dossier"
     
            # Attribution des Droit a l'Administrateur
            Write-host "Attribution de l'utilisateur Administrateur"
            Set-NTFSOwner -Account 'BUILTIN\Administrateurs' -Path $Objet_Dossier.FullName
            Get-ChildItem2 $Objet_Dossier -Recurse | Select-Object fullname | Set-NTFSOwner -Account 'BUILTIN\Administrateurs'
     
            # Suppression des Héritages
            Write-host "Suppression des Héritages"
            Disable-NTFSAccessInheritance -Path $Objet_Dossier.FullName -RemoveInheritedAccessRules
     
            # Rétablissement de l'héritage
            Write-host "Rétablissement de l'héritage"
            Enable-NTFSAccessInheritance -Path $Objet_Dossier.FullName -RemoveExplicitAccessRules 
     
            # Ajout acces Pour Admin
            Write-host "Ajout acces Pour Admin"
            Add-NTFSAccess -Path $Objet_Dossier.FullName -Account 'BUILTIN\Administrateurs' -AccessRights FullControl -AppliesTo ThisFolderSubfoldersAndFiles 
     
            # Ajout acces Pour Propriétaire
            Write-host "Ajout acces Pour Propriétaire"
            Add-NTFSAccess -Path $Objet_Dossier.FullName -Account $proprio.Owner -AccessRights Modify -AppliesTo ThisFolderSubfoldersAndFiles 
     
            # Réaffectation Du Propriétaire
            Write-host "Réaffectation Du Propriétaire"
            Set-NTFSOwner -Account $proprio.Owner -Path $Objet_Dossier.FullName
            Get-ChildItem2 $Objet_Dossier -Recurse | Select-Object fullname | Set-NTFSOwner -Account $proprio.Owner
            }
        }

  4. #4
    Membre chevronné
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Février 2012
    Messages
    281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Lot et Garonne (Aquitaine)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2012
    Messages : 281
    Par défaut
    désoler ddray
    le temps que je rédige une réponse tu a poster une solution de ton coté

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Mars 2018
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2018
    Messages : 5
    Par défaut
    Merci pour ta réponse

    bien que les commandes modifient les droits Audits me semble inutile, ton script semble bon, sauf cette ligne qui est en trop (en ligne 8) :
    $Dossier = $Liste_Objet_Niv1.FullName
    oui j'ai corrigé

    autre detail la désactivation et l'activation de l'heritage des droits est récursif, il est donc inutile de faire les get-childitem -recurse qui suive !!
    le problème était qu'il y avait des fichiers ou des repertoire qui passait en erreur
    c'est pour cela que je rebalaye tous les fichiers

    attention aux droits de l'utilisateur système, qui peut être bloquant pour certaine action, comme les sauvegarde !
    mais il est peut être sur le dossier de base "\\serveur\USERS" !!
    Oui tout est placé sur USERS


    merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Probleme de droits sur le repertoire de partage share
    Par philippe57460 dans le forum Administration système
    Réponses: 3
    Dernier message: 04/07/2008, 22h16
  2. Droit sur repertoire
    Par Link61 dans le forum Administration système
    Réponses: 2
    Dernier message: 30/05/2006, 10h45
  3. Réponses: 5
    Dernier message: 22/03/2006, 14h05
  4. Réponses: 6
    Dernier message: 19/01/2006, 12h34
  5. Mount / fstab - Problème de droit sur une partition
    Par Chance666 dans le forum Administration système
    Réponses: 5
    Dernier message: 17/01/2005, 15h57

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