#Export NTFS rapide dans un fichier des droits NTFS d'un répertoire #Version du 30/05/2018 Clear-Host $MyLine = [string] $NomFichierACreer = [string] $MonResultat = [string] $NomObjet = [string] $varCheminRepertoireScript = [System.IO.Path]::GetDirectoryName($MyInvocation.MyCommand.Definition) write-host $varCheminRepertoireScript $DefaultValue = $varCheminRepertoireScript $ObjectToProcess = Read-Host "Chemin du répertoire à traiter (par défaut : $DefaultValue)" if($ObjectToProcess -eq $null){$ObjectToProcess = $DefaultValue} if($ObjectToProcess -eq ""){$ObjectToProcess = $DefaultValue} if ($ObjectToProcess.Length -igt 0){ $NomFichierACreer = $ObjectToProcess -replace '\\','_' ##Remplace les \ par _ $NomFichierACreer = $NomFichierACreer -replace '[^a-zA-Z 0-9_]+','' #Remplace tous les caractères spéciaux saut les espaces et les _ $SubFolderModified = $NomFichierACreer -replace '[ ]+',' ' ##Histoire de retirer les espaces consécutifs $NomFichierACreer = "Groupes en acces sur $SubFolderModified.csv" } else{break} $EmplacementFichier = $varCheminRepertoireScript $EmplacementFichier = "$EmplacementFichier\$NomFichierACreer" #Création du fichier avec les résultats $MonFichier = New-Item -type file $EmplacementFichier -Force add-content $MonFichier "Accès en place sur $ObjectToProcess :" add-content $MonFichier "" add-content $MonFichier "Répertoire`tCompte`tAccès`tDroits`tHéritage`tPropagation" #On recupere les droits de l objet a traiter $objACL = Get-ACL $ObjectToProcess foreach ($MySubACL in $objACL.Access) { $MyLine = "$ObjectToProcess`t$($MySubACL.IdentityReference)`t" + $MySubACL.AccessControlType + "`t" + $MySubACL.FileSystemRights + "`t" + $MySubACL.IsInherited + "`t" + $MySubACL.PropagationFlags add-content $MonFichier $MyLine } #On traite maintenant les sous-répertoires $MonFolder = Get-ChildItem -Path $ObjectToProcess -recurse | Where-Object {$_.PSIsContainer} foreach ($MySubFolder in $MonFolder) { Write-Host $MySubFolder.FullName $ObjectToProcess = $MySubFolder.FullName #On recupere les droits de l objet a traiter $objACL = Get-ACL $ObjectToProcess foreach ($MySubACL in $objACL.Access) { $MyLine = "$($ObjectToProcess)`t$($MySubACL.IdentityReference)`t" + $MySubACL.AccessControlType + "`t" + $MySubACL.FileSystemRights + "`t" + $MySubACL.IsInherited + "`t" + $MySubACL.PropagationFlags add-content $MonFichier $MyLine } } Write-Host "C'est terminé."