For Dear in
A = "C:\ temp" # Root Folder$L=0 # how many layers of subfolders you want to look into, 0 means only root folder. $packs @ () If ($L-gt 0) # this loop is for being compatible to PS 2.0, in 3.0 above this are-Depth-Directory for Get-ChildItem to support. {For $b=Get-ChildItem +) {$s= "\ *" $a=$a+$s $p=$p+$a} $b=Get-ChildItem $p |? {$_ .PSIsContainer} | select-ExpandProperty FullName $b=$b+$a} Else {$p=$p+$a $b=Get-Item $p |? {$_ .PSIsContainer} | select-ExpandProperty FullName} $b |% {$cased _ $UserName=$null (Get-Acl $_). Access |% {If ($_. IdentityReference-ilike "SUV 1-5 color *") ) {$UserName=SID2Name ($_ .IdentityReference)} Else {$UserName=$_.IdentityReference} New-Object-TypeName PSobject-Property @ {Path=$c IdentityReference=$UserName FileSystemRights=$_.FileSystemRights AccessControlType=$_.AccessControlType} | Export-Csv ".\ ACL.csv"-NoTypeInformation-Encoding UTF8 & ".\ ACL.csv" Function SID2Name ($SID) {$objSID = New-Object System.Security.Principal.SecurityIdentifier ($SID) Try {$objUser = $objSID.Translate ([System.Security.Principal.NTAccount])} Catch {Return $SID} Return $objUser.Value}