Master NTFS Permissions with PowerShell: PowerShell 101

In this article, we delve into the world of NTFS permissions in PowerShell, exploring how PowerShell can simplify the management and enforcement of permissions. Join us as we uncover the powerful capabilities of PowerShell in handling NTFS permissions, empowering you to enhance security and streamline access control in your Windows environment.

Making Test Folders

To create files and folders for testing purposes using PowerShell, you can use the New-Item cmdlet. Here’s an example:

# Create a new folder
New-Item -ItemType Directory -Path C:\TestFolder

#Create a new text file
New-Item -ItemType File -Path C:\TestFolder\test.txt
Making Test Folders

In this example, the New-Item cmdlet is used to create a new folder named “TestFolder” in the root of the C drive. The -ItemType parameter specifies the type of item to create, which is Directory for a folder. The -Path parameter specifies the location where the item should be created.

The second New-Item cmdlet is used to create a new text file named “test.txt” within the “TestFolder” directory. The -ItemType parameter is set to File to indicate that a file should be created.

Using Get-Acl to Check NTFS Permissions

Showing NTFS Permissions

To view NTFS permissions for a file or folder using PowerShell, you can utilize the Get-Acl cmdlet. Here’s an example:

# Get the NTFS permissions for a file or folder
$path = "C:\TestFolder\test.txt"
$acl = Get-Acl -Path $path

Display the NTFS permissions
$acl.Access | Format-Table IdentityReference, FileSystemRights, AccessControlType
Showing NTFS Permissions

In this example, we first define the $path variable to specify the path of the file or folder for which we want to view the NTFS permissions.

Next, we use the Get-Acl cmdlet with the -Path parameter to retrieve the Access Control List (ACL) for the specified path.

Finally, we display the NTFS permissions by accessing the Access property of the ACL object. We use the Format-Table cmdlet to format the output in a table format, displaying the IdentityReference (user or group), FileSystemRights (specific permissions), and AccessControlType (allow or deny) properties.

Sorting out Access Objects

To sort out the access objects when viewing NTFS permissions with Get-Acl in PowerShell, you can use the Sort-Object cmdlet. Here’s an example:

# Get the NTFS permissions for a file or folder
$path = "C:\TestFolder\test.txt"
$acl = Get-Acl -Path $path

# Sort the access objects by IdentityReference
$sortedAccess = $acl.Access | Sort-Object IdentityReference

Display the sorted NTFS permissions
$sortedAccess | Format-Table IdentityReference, FileSystemRights, AccessControlType
Sorting out Access Objects

In this example, we first retrieve the NTFS permissions for the specified file or folder using Get-Acl and store the result in the $acl variable.

Next, we sort the access objects in the $acl.Access collection using the Sort-Object cmdlet. We specify the IdentityReference property as the sorting criteria to sort the access objects based on the user or group.

Finally, we display the sorted NTFS permissions by accessing the $sortedAccess variable and formatting the output using Format-Table, showing the IdentityReference, FileSystemRights, and AccessControlType properties.

Using Set-Acl to adjust NTFS Permissions With Set-Acl

Copy NTFS Permissions

To copy NTFS permissions from one file or folder to another using Set-Acl in PowerShell, you can follow these steps:

  • Retrieve the source NTFS permissions using Get-Acl and store it in a variable.
$sourcePath = "C:\SourceFolder"
$destinationPath = "C:\DestinationFolder"
$sourceAcl = Get-Acl -Path $sourcePath
Copy NTFS Permissions
  • Apply the source NTFS permissions to the destination file or folder using Set-Acl. Set-Acl -Path $destinationPath -AclObject $sourceAcl

By executing the above steps, the NTFS permissions from the source folder will be copied and applied to the destination folder.

Make sure to adjust the $sourcePath and $destinationPath variables to match your actual source and destination paths.

Include NTFS Permissions

When modifying NTFS permissions using Set-Acl in PowerShell, you have the option to include additional permissions alongside the existing ones. To include NTFS permissions, you can follow these steps:

  • Retrieve the existing NTFS permissions using Get-Acl and store it in a variable. $path = "C:\Path\to\folder" $acl = Get-Acl -Path $path
  • Create a new Access Rule object with the desired permissions.
$permission = New-Object System.Security.AccessControl.FileSystemAccessRule("Domain\User", "FullControl", "Allow")
Include NTFS Permissions
  • Replace “Domain\User” with the appropriate user or group and “FullControl” with the desired permission level.
  • Add the new Access Rule to the Access Control List (ACL). $acl.AddAccessRule($permission)
  • Apply the modified ACL to the file or folder using Set-Acl. Set-Acl -Path $path -AclObject $acl

By following these steps, you can include additional NTFS permissions to the existing ones for a specific file or folder.

Make sure to adjust the $path variable, “Domain\User”, and “FullControl” according to your requirements.

Delete NTFS Permissions

When using Set-Acl in PowerShell to modify NTFS permissions, you can also remove or delete specific permissions from the Access Control List (ACL). To delete NTFS permissions, follow these steps:

  • Retrieve the existing NTFS permissions using Get-Acl and store it in a variable. $path = "C:\Path\to\folder" $acl = Get-Acl -Path $path
  • Identify the specific permission you want to delete from the ACL. $permissionToDelete = "Domain\User" Replace “Domain\User” with the actual user or group for which you want to remove the permission.
  • Find the Access Rule corresponding to the permission you want to delete.
$ruleToDelete = $acl.Access | Where-Object {$_.IdentityReference.Value -eq $permissionToDelete}
Delete NTFS Permissions
  • Remove the Access Rule from the ACL. $acl.RemoveAccessRule($ruleToDelete)
  • Apply the modified ACL to the file or folder using Set-Acl. Set-Acl -Path $path -AclObject $acl

By following these steps, you can delete specific NTFS permissions from the existing ACL for a particular file or folder.

In conclusion, PowerShell proves to be a valuable tool for managing NTFS permissions, offering flexibility, automation, and efficiency. With the insights gained from this article, you are now equipped to leverage PowerShell to optimize NTFS permissions and maintain a secure and well-organized file system.

Meet the Author

Abdul Rahim has been working in Information Technology for over two decades. Learn how Abdul got his start as a Tech Blogger , and why he decided to start this Software blog. If you want to send Abdul a quick message, then visit his contact page here.