- forum
- PowerShell
- Entraide pour les initiés
- Script pour lister les droits NTFS + Utilisateurs d'un dossier partagé
Question Script pour lister les droits NTFS + Utilisateurs d'un dossier partagé
- Laurent Dardenne
- Hors Ligne
- Modérateur
Réduire
Plus d'informations
- Messages : 6302
- Remerciements reçus 68
il y a 1 an 11 mois #32646
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet Script pour lister les droits NTFS + Utilisateurs d'un dossier partagé
>>as-tu un contact pour échanger en direct ?
Non.
>>rien ne s'affiche que dois je faire
Déjà analyser les ACL du srv qui pose pb, tes specs sont peut être à revoir.
Là ce n'est pas vraiment un pb de code mais d'infra à mon avis.
Non.
>>rien ne s'affiche que dois je faire
Déjà analyser les ACL du srv qui pose pb, tes specs sont peut être à revoir.
Là ce n'est pas vraiment un pb de code mais d'infra à mon avis.
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- Christophe MELIN
- Hors Ligne
- Membre junior
Réduire
Plus d'informations
- Messages : 26
- Remerciements reçus 4
il y a 1 an 11 mois #32657
par Christophe MELIN
Réponse de Christophe MELIN sur le sujet Script pour lister les droits NTFS + Utilisateurs d'un dossier partagé
Bonsoir,
Pas sûr que le problème vienne de $dispkayed_membres_groups_list.
Je crois que cela vient plutôt de la variable $acl_unit_IdentityReference_Without_DOMAIN pour laquelle je ne vois aucune initialisation donc $null par défaut, ce qui expliquerait l'erreur "argument null ou vide".
Petit conseil :
Ajouter au début du script la ligne
set-PSdebug -strict
Il y a une erreur si on essaie d'utiliser une variable pas encore initialisée. Cela permet de cibler plus rapidement des erreurs dues par exemple à une faute d'orthographe dans un nom de variables. D'ailleurs, en ajoutant cette ligne dans une copie de ton script, j'obtiens directement l'erreur suivante :
Impossible d’extraire la variable « $acl_unit_IdentityReference_Without_DOMAIN », car elle n’a pas été définie.
Au caractère xxx\TestAcl.ps1:xx : yy
+ ... ontent += " " + $acl_unit_IdentityReference_Without_DOMAIN + "`r`n ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation : (acl_unit_Identi..._Without_DOMAIN:String) , RuntimeException
+ FullyQualifiedErrorId : VariableIsUndefined
C'est très explicite.
Pas sûr que le problème vienne de $dispkayed_membres_groups_list.
Je crois que cela vient plutôt de la variable $acl_unit_IdentityReference_Without_DOMAIN pour laquelle je ne vois aucune initialisation donc $null par défaut, ce qui expliquerait l'erreur "argument null ou vide".
Petit conseil :
Ajouter au début du script la ligne
set-PSdebug -strict
Il y a une erreur si on essaie d'utiliser une variable pas encore initialisée. Cela permet de cibler plus rapidement des erreurs dues par exemple à une faute d'orthographe dans un nom de variables. D'ailleurs, en ajoutant cette ligne dans une copie de ton script, j'obtiens directement l'erreur suivante :
Impossible d’extraire la variable « $acl_unit_IdentityReference_Without_DOMAIN », car elle n’a pas été définie.
Au caractère xxx\TestAcl.ps1:xx : yy
+ ... ontent += " " + $acl_unit_IdentityReference_Without_DOMAIN + "`r`n ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation : (acl_unit_Identi..._Without_DOMAIN:String) , RuntimeException
+ FullyQualifiedErrorId : VariableIsUndefined
C'est très explicite.
Connexion ou Créer un compte pour participer à la conversation.
- rhiwotar
- Hors Ligne
- Membre premium
Réduire
Plus d'informations
- Messages : 111
- Remerciements reçus 2
il y a 1 an 8 mois #32917
par rhiwotar
Réponse de rhiwotar sur le sujet Script pour lister les droits NTFS + Utilisateurs d'un dossier partagé
Bonjour !
Si le sujet est toujours d'actu, je viens de finir un script qui correspond
Bon, c'est un assemblage de script et fonctionnellement, il est fini mais il est pas forcement très joli/optimisé
Le voici, si ça peut aider
Si le sujet est toujours d'actu, je viens de finir un script qui correspond
Bon, c'est un assemblage de script et fonctionnellement, il est fini mais il est pas forcement très joli/optimisé
Le voici, si ça peut aider
function ListeGroupeAD($membreGroupe){
##Pour chaque membre, verifie si c'est un groupe
foreach($membre in $membreGroupe){
if($membre.objectClass -like "group"){
##ecrit l'arborescence des sous-groupe
$SousGroupe = $SousGroupe + "/" + $membre.name
$cut = "/" + $membre.name
##liste les membres du sous-groupe
$MembreDeuxiemeGroupe = Get-ADGroupMember $membre.name
##Relance la fonction pour le sous-groupe
ListeGroupeAD($MembreDeuxiemeGroupe)
##enleve le dernier morceau de l'arborescence pour redescendre
$SousGroupe = $SousGroupe.Substring(0,$SousGroupe.Length-$cut.Length)
}
else{
##renseigne temporairement les infos de ListeMembre
$temp = New-Object System.Object
##Complete la ListeMembre
$temp | Add-Member -MemberType NoteProperty -Name "Racine" -value $PremierGroupe
if($SousGroupe -like $null){
$temp | Add-Member -MemberType NoteProperty -Name "SousGroupe" -value "-"
}
else{
$temp | Add-Member -MemberType NoteProperty -Name "SousGroupe" -value $SousGroupe
}
$temp | Add-Member -MemberType NoteProperty -Name "utilisateur" -value $Membre.name
##Si le SID correspond au domaine (le domaine correspond a celui du serveur executant le script)
try{
##recupere si le compte est actif et sa date de derniere connexion
$UserSID = get-aduser $membre.sid -Properties lastlogondate
$temp | Add-Member -MemberType NoteProperty -Name "compte actif" -value $UserSID.enabled
$temp | Add-Member -MemberType NoteProperty -Name "derniere connexion" -value $UserSID.lastlogondate
}
catch{
## indique que l'utilisateur n'est pas dans le domaine
$temp | Add-Member -MemberType NoteProperty -Name "compte actif" -value "Hors du domaine"
$temp | Add-Member -MemberType NoteProperty -Name "derniere connexion" -value "Hors du domaine"
}
##ajoute l'objet à la collection
$ListeMembre.Add($temp) | Out-Null
}
}
}
$DossierRacine = '\\Serveur\Dossier$\'
##recupere la liste des dossiers dans Service
$listeservice = (Get-ChildItem $DossierRacine).name
##Un boucle pour verifier tous les dossiers de Service
foreach($service in $listeservice){
## Verifie les groupes correspondant aux dossiers
$servicegroupe = $service -replace " ",""
$ListeMembre = New-Object System.Collections.ArrayList
Clear-Variable premiergroupe,membrepremiergroupe
$premiergroupe = "access" + $servicegroupe + "write"
$MembrePremierGroupe = Get-ADGroupMember $PremierGroupe
ListeGroupeAD($MembrePremierGroupe)
##Exporte les contenus des groupes dans des fichiers differents en fonction du service
$grouperdest = "c:\listeGroupes"+$service+".csv"
$ListeMembre|export-csv -Path $grouperdest -Delimiter ";" -Encoding UTF8 -NoTypeInformation
##recupere les droits d'acces des dossiers
$dossierservice = "$DossierRacine$service\*"
$listeacces = Get-Acl $dossierservice
##recupere le 2e niveau des dossiers s'il est different
$dossierserviceRecursif = "$DossierRacine$service\*\*"
$listeaccessRecursif = get-acl $dossierserviceRecursif
$compare = compare-object $listeacces.pschildname $listeaccessRecursif.pschildname
if($compare){
$listeacces += $listeaccessRecursif
}
##Liste tous les droits dans un fichiers differents par service
$listeDossier = New-Object System.Collections.ArrayList
foreach($access in $listeacces){
##filtre pour enlever le groupe "legitime" et les utilisateurs par defaut
$access.Access|where {$_.IdentityReference -like "Domaine\*" -and $_.identityreference -notlike "Domaine\*access$servicegroupe*"}|foreach{
$parentPath = ($access.PSParentPath -split "::")[1]
$temp = New-Object System.Object
$temp | Add-Member -MemberType NoteProperty -Name "Dossier_Parent" -Value $parentPath
$temp | Add-Member -MemberType NoteProperty -Name "Nom" -Value $access.pschildname
$temp | Add-Member -MemberType NoteProperty -Name "Autorisé" -Value $_.AccessControlType
$temp | Add-Member -MemberType NoteProperty -Name "droits" -Value ($_.FileSystemRights -replace (", Synchronize",""))
$temp | Add-Member -MemberType NoteProperty -Name "groupe" -Value $_.identityreference
$listeDossier.Add($temp)| Out-Null
}
}
$dossierdest = "c:\listeDossiers"+$servicegroupe+".csv"
$listeDossier|export-csv -Path $dossierdest -Delimiter ";" -Encoding UTF8 -NoTypeInformation
}
Connexion ou Créer un compte pour participer à la conversation.
- forum
- PowerShell
- Entraide pour les initiés
- Script pour lister les droits NTFS + Utilisateurs d'un dossier partagé
Temps de génération de la page : 0.100 secondes
- Vous êtes ici :
- Accueil
- forum
- PowerShell
- Entraide pour les initiés
- Script pour lister les droits NTFS + Utilisateurs d'un dossier partagé