Question Répertoires liés par ACL et gérés par des groupes vides

Plus d'informations
il y a 2 ans 3 mois - il y a 2 ans 3 mois #32562 par Bruce
Bonjour,

Voici un script qui peut être utile lorsque l'on a plusieurs serveurs de fichiers et plusieurs groupes AD qui gèrent les autorisations au dossiers.
Il permet de recherches les droits NTFS sur les dossiers partagés pour voir ceux qui sont liés par des groupes vides (sans aucun user).
Dans mon cas nous avons plusieurs serveurs de fichiers (un par société) donc le script laisse le choix de choisir sur quel serveur on veut effectuer le scan.

Voici le code:
clear-host
Import-Module ActiveDirectory

# Goupes AD Vides
$GroupesAD_Vides = Get-ADGroup -Filter * -Properties members | where {-not $_.members}  | Select-Object Name, GroupCategory, DistinguishedName, whenCreated
$EmptyGroups = $GroupesAD_Vides.Count

#$GroupesAD_Vides | Out-GridView -Title " $EmptyGroups Groupes AD vides" -OutputMode None |sort -Property Name

#Listes des serveurs
$AllServers= Get-ADComputer -Filter {OperatingSystem -like "*windows*server*" -and Enabled -eq $true} -Properties Name, OperatingSystem, IPv4Address | Select-Object Name, OperatingSystem, IPv4Address | sort Name 
#Selection d'un serveur
$SelectedServer = $AllServers | Out-GridView -Title "Selectionnez le serveur à scanner pour les répertoires partagés" -OutputMode Single |sort -Property Name
$NomServeur = $SelectedServer.Name
#Partages du serveur
$AllShares = Get-WmiObject -ComputerName $NomServeur -Class Win32_Share -ErrorAction Stop
foreach ($share in $AllShares)
{
    if ($share.Name -like "DATA")
    {
        $sourcedir = "\\" + $NomServeur + "\" + $share.Name + "\MESPARTAGES"
        $ListDirectory = Get-ChildItem –Path $sourcedir
    }
}
#$ListDirectory | Out-GridView -Title "Repertoires partagés de $NomServeur" -OutputMode None | Select-Object Name, LastWriteTime |sort -Property Name

#Recuperation des ACL de chaque répertoire
$i = 0
foreach ($Repertoire in $ListDirectory)
{
    $FullPath = $sourcedir + "\$Repertoire"
    $MesACLs = get-acl $FullPath
    #Write-Host -ForegroundColor Green -BackgroundColor Black "$Repertoire"
    ForEach ($OneACL in $MesACLs.Access) 
    {    
        $OneAclResult = New-Object -TypeName PSObject
        $NameACL = [string] $OneACL.IdentityReference
        $NomDuGroupe = $NameACL.substring($NameACL.indexof("\")+1)
        #Write-Host -ForegroundColor Green -BackgroundColor Blue "`tACL:$NomDuGroupe"
        ForEach ($GroupeVide in $GroupesAD_Vides) 
        {
            if ($GroupeVide.Name -like $NomDuGroupe) 
            {
                Write-Host -ForegroundColor Red -BackgroundColor Yellow "`t$Repertoire est lié par ACL via les droits NTFS au groupe vide $NomDuGroupe"
                $i++
            }
        }
    } 
}
if ( $i -eq 0)
{
    Write-Host -ForegroundColor Green -BackgroundColor Black "Aucun répertoire lié par ACL à un groupe vide sur le serveur $Nomserveur"
    Write-Host -ForegroundColor Green -BackgroundColor Black "FIN"
}else
{
    Write-Host -ForegroundColor Green -BackgroundColor Black "FIN"
}
Dernière édition: il y a 2 ans 3 mois par Laurent Dardenne. Raison: balise code

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

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