Setting NTFS security permissions from Windows File Explorer is fine when you’re dealing with a single server. It’s another situation entirely, however, when you need to modify NTFS security on 100 folders spread across 20 servers. For these administrative tasks, we rely on Windows PowerShell to get the job done quickly, accurately, and easily.

Unfortunately, even the Windows PowerShell v5 April 2015 preview contains only two cmdlets related to access control lists (ACLs), and they are pretty weak:

In today’s exercise, we’ll use Raimund Andrée’s File System Security PowerShell module to simplify NTFS permissions management. By using Windows PowerShell remoting and Raimund’s module, you can automate what is otherwise tedious, time-consuming manual work.

Begin by downloading Raimund’s module from the TechNet Script Center and unpacking the ZIP file to a folder named NTFSSecurity in your env:$PSModulePath location. By default, your PowerShell module path is:

C:\ProgrHam Files\WindowsPowerShell\Modules

Here’s a picture from my Windows 8.1 administrative workstation:

Make sure to store PowerShell modules in the proper location

Make sure your PowerShell modules are stored in the proper location.

You’ll note that Raimund’s NTFSSecurity project is quite a bit more complex than other custom modules you might have seen, including several dynamic link libraries (DLLs) and such. More to the point, Raimund leverages the AlphaFS library to give him easier access to the .NET Framework’s NTFS access features.

The final preliminary ingredient we need here is a folder and some files to play with. I created a folder named dox in the root of drive C: and populated the folder with a subfolder and a bunch of dummy files. Look here:

We need some files to play with

We need some files to play with.

Okay—no more File Explorer. From now on, everything we do will be from an elevated Windows PowerShell console session, with a bit of Out-GridView thrown in for good measure. Let’s begin!

Viewing NTFS permissions ^

First, let’s verify that PowerShell module auto-loading properly recognizes our new NTFSSecurity module. Use Get-Command to auto-import the NTFSSecurity module and enumerate its commands: