PowerShell – list the ACL of directories

#-------------[deklarations]--------------------------
#source

#logs
#$successLog='\\host\shares\!scripts\!logs\done.LOG'
#$errorLog='\\host\shares\!scripts\!logs\error.LOG'
#$unreachableLog='\\host\shares\!scripts\!logs\unreachable.LOG'
$reportLog='\\host\shares\!scripts\!reports\dirsACL.csv'
#params
$dirToCheck='\\host\shares\*\*'
$header = 'path,dir,acl,user,isEnable'
#-------------[functions]--------------------------
Add-Content -Value $header -Path $reportLog

$dirs = dir $dirToCheck | where {$_.PsIsContainer -eq $true}

foreach($dir in $dirs) {
    $acls = (Get-Acl $dir.FullName).Access
    $dirName = $dir.FullName.Split("\")[5]

    foreach($acl in $acls) {
        $user = Get-ADUser $aclIdentityRefernce | ? {$_.UserPrincipalName -ne $null} | Select -ExpandProperty UserPrincipalName
        $username = $user.Split("@")[0]
        $user = Get-ADUser -Filter "UserPrincipalName -Eq '$user'"
        $samAccountName - $user.SamAccountName.ToString()

        $output = $dir.Fullname + "," + dirName + "," + $acl.AccessControlType + "," + $username + "," + $user.Enabled
        $output
        Add-Content - Value $output -Path $reportLog
    }
}
#-------------krolaki.eu--------------------------

 

Leave a Reply

Your email address will not be published. Required fields are marked *