function Get-ExplicitAcl { [CmdletBinding()] param([string]$Path, [switch]$Recurse) Process { $allFiles = Get-ChildItem $Path -Recurse:$Recurse | select -ExpandProperty FullName $allFiles += Get-Item $Path | select -ExpandProperty FullName $result = $allFiles | % { $current = $_ try { $acl = get-acl -path $current if($acl) { $dacl = $acl.GetAccessRules($true, $false, [System.Security.Principal.NTAccount]) foreach($ace in $dacl) { $detail = new-object psobject -Property @{ Path = $current; FileSystemRights = $ace.FileSystemRights; AccessControlType = $ace.AccessControlType; IdentityReference = $ace.IdentityReference; InheritanceFlags = $ace.InheritanceFlags; PropagationFlags = $ace.PropagationFlags; } $detail | select Path, AccessControlType, IdentityReference, FileSystemRights, InheritanceFlags, PropagationFlags } } } catch [System.UnauthorizedAccessException] { Write-Error "Failed to read DACL from $current.FullName." } } $result | sort path } }
Tuesday, March 8, 2011
Finding all explicit ACLs in NTFS
Sometimes file permissions can become a little messed up, so this script will list all the explicitly set (i.e. not inherited) ACEs. I suggest that you use the Out-GridView, Format-Table, or ConvertTo-Csv Cmdlets to better visualise the result.
Subscribe to:
Post Comments (Atom)
0 comments:
Post a Comment