Inspect and modify ACLs with Get-Acl and Set-Acl
Object-based NTFS permission management — read ACEs as structured data and write modified descriptors back with Set-Acl.
01Command
$ (Get-Acl 'C:\Shared\Reports').Access | Format-Table IdentityReference, FileSystemRights, AccessControlType, IsInherited02What it does
Get-Acl returns a .NET DirectorySecurity/FileSecurity object whose .Access collection gives typed fields — identity, rights, allow/deny, inheritance — instead of icacls' flat text. The usual pattern is $acl = Get-Acl $path; $acl.SetAccessRule(...); Set-Acl $path $acl, which also enables cloning a folder's security to another folder. Works for registry keys too with the RegistrySecurity provider.
03Risk
04Undo
✓No undo needed — this command does not change persistent state.
05Sources
- Get-Acl - PowerShellEvidence: SS64 shows Get-Acl piped to Select-Object/Format-Table to list ACEs, and saving a descriptor with $acl | Set-Acl.
- Get-Acl | Microsoft LearnEvidence: Microsoft documents Get-Acl returning a security descriptor object with an Access collection, and the paired Set-Acl for applying modified descriptors.
Last verified: 2026-09-17 · Category: Files & Folders
06Related solutions
Diagnose NTFS file system errors and bad sectors on any volume — including the system drive while Windows is running — before committing to a repair.
Robocopy is Windows' built-in robust file copier: use /MIR to keep a destination folder as an exact one-way mirror of a source, resumable and restartable.
Search inside text files and logs with regex, returning file, line number and match.