Script pour lister les droits NTFS + Utilisateurs

Fermé
Sophien - 19 sept. 2022 à 13:48
hamariana Messages postés 5 Date d'inscription vendredi 10 mars 2023 Statut Membre Dernière intervention 10 mars 2023 - 10 mars 2023 à 10:10

Bonjour,

Script pour lister les droits NTFS + Utilisateurs d'un dossier partagé


J'ai un problème avec mon script qui fonctionne sur un PC mais pas l'autre je n'arrive pas à trouver le problème ci joint le script : 

#Import module:
Import-Module ActiveDirectory
#Scripts variable
    #Entrez ici le chemin du dossier :
    $folder = "CHEMIN_AD"
    $users_excluded = @("CREATOR OWNER" , "BUILTIN\Administrateurs" , "AUTORITE NT\Système" , "NomDuDomaine\Administrateur")

    $displayed_members_groups_list = @()
    # initialisation du contenu du fichier
    $file_content = "
L'objectif de ce dossier est de permettre aux utilisateurs d'échanger des documents.
Les dossiers de ce niveau peuvent être consultés, créés, modifiés et supprimés par n'importe quel utilisateur à tout moment.

Accès accordés aux sous-dossiers pour les groupes :



"
#Liste de chaque groupe AD pour chaque sous-dossiers


            $file_content += "NomDuDossier`r`n"
            $acl = Get-Acl "$folder"  | ForEach-Object { $_.Access } #obtenir des informations de sécurité
            foreach($acl_unit in $acl)
            {
                if ($users_excluded -notcontains $acl_unit.IdentityReference) #Vérifier si l'utilisateur est exclu
                {
                    $file_content += "    " + $acl_unit_IdentityReference_Without_DOMAIN + "`r`n"
                    if($displayed_members_groups_list -notcontains $acl_unit_IdentityReference_Without_DOMAIN) #Vérifiez si le groupe est déjà enregistré dans la liste des groupes
                    {
                        $displayed_members_groups_list += $acl_unit_IdentityReference_Without_DOMAIN
                    }
                }
            }
            $file_content += "`r`n"
    $file_content += "`r`nGroups :



"
#Liste des membres de chaque groupe AD
    foreach ($row in $displayed_members_groups_list)
    {
        $file_content_temp = ""
        $users = Get-ADGroupMember -Identity $row | Sort-Object Name | Sort-Object SamAccountName ` #Obtenir la liste des membres du Groupe AD
        $i = 0
        ForEach ($user in $users)
        {
            $file_content_temp +=  $user.SamAccountName   + "      " + $user.Name + "    " + "`r`n"  #Afficher le nom d'utilisateur pour chaque utilisateur
            $i += 1
        }
        $file_content += $row + " (" + $i + ") :`r`n" 
        $file_content += $file_content_temp
        $file_content += "`r`n"
    }

    $date_now = Get-Date -format "dd/MM/yyyy" #date
    $time_now = Get-Date -format "HH:mm" #heure
    $file_content += "`r`n


`r`nContent automatically generated on " + $date_now + " at " + $time_now + "."
    $readme_file_path = $folder + "\_README.TXT" #Chemin du fichier de sortie
    echo $file_content > $readme_file_path #Ecriture du fichier de sortie



ERREUR : Get-ADGroupMember : Impossible de valider l'argument sur le paramètre «Identity». L’argument est Null ou vide. Indiquez un 
argument qui n’est pas Null ou vide et réessayez.
Au caractère Ligne:43 : 46
+         $users = Get-ADGroupMember -Identity $row | Sort-Object Name | Sort-Obje ...
+                                              ~~~~
    + CategoryInfo          : InvalidData : ( [Get-ADGroupMember], ParameterBindingValidationException
    + FullyQualifiedErrorId : ParameterArgumentValidationError,Microsoft.ActiveDirectory.Management.Commands.GetADGroupMembe 
   r

Pouvez-vous m'aider svp


Windows / Chrome 105.0.0.0

3 réponses

choubaka Messages postés 39375 Date d'inscription jeudi 4 avril 2002 Statut Modérateur Dernière intervention 14 avril 2024 2 100
12 oct. 2022 à 10:38

Bonjour

où est déclarée la variable $row ?


0

Bonjour,

row ne contient probablement pas une cellule de type ADUser dans la liste que vous avez. Assurez-vous que l'ArrayList soit bien de type ADUser.

0
hamariana Messages postés 5 Date d'inscription vendredi 10 mars 2023 Statut Membre Dernière intervention 10 mars 2023 1
10 mars 2023 à 10:10

Bonjour,

Le message d'erreur indique que l'argument $row est null ou vide lors de l'appel à la cmdlet Get-ADGroupMember à la ligne 43. Cela peut se produire si $displayed_members_groups_list est vide. Vous pouvez ajouter une condition pour vérifier si la liste n'est pas vide avant de boucler sur chaque élément, comme ceci :

if($displayed_members_groups_list){
    foreach ($row in $displayed_members_groups_list)
    {
        #...
    }
}
0