Changing file permissions using PowerShell

in #technology6 years ago

Use the following script for changing file permissions using PowerShell. I use this script when command line takeown and icacls fail. Obviously, run from an elevated PowerShell prompt or by typing 'powershell' from elevated cmd.

The Script

Change $folder to the base directory you want for changing permissions.
Please note, you can use network UNC paths for this or a simple C:.
$folder = "\homeserver\users"
$users = get-childitem $folder
Foreach ($user in $users) {
$acl = Get-Acl $user.FullName
set-acl $user.FullName $acl -Verbose
$subFolders = Get-ChildItem $user.FullName -Directory -Recurse
Foreach ($subFolder in $subFolders) {
$acl = Get-Acl $subFolder.FullName
set-acl $subFolder.FullName $acl -Verbose
$subFiles = Get-ChildItem $user.FullName -File -Recurse
Foreach ($subFile in $subFiles) {
$acl = Get-Acl $subFile.FullName
set-acl $subFile.FullName $acl -Verbose

I've never had takeown fail on local disks, but I have found that I needed to resort to using a PowerShell script when doing this through a network location. It's a very powerful script, however always be careful when running this. Be sure to always test this in a subdirectory first. This can be catastrophic for a company with millions of files and folder to reset the permission on, therefore be very careful!

Leave any Questions and Comments below and I will get back to you. I regularly publish on YouTube, Steemit, and so if you’d like to see more videos please like, subscribe, and follow me.

Posted from my blog:


Hi, @christitus!

You just got a 0.09% upvote from SteemPlus!
To get higher upvotes, earn more SteemPlus Points (SPP). On your Steemit wallet, check your SPP balance and click on "How to earn SPP?" to find out all the ways to earn.
If you're not using SteemPlus yet, please check our last posts in here to see the many ways in which SteemPlus can improve your Steem experience on Steemit and Busy.

Coin Marketplace

STEEM 0.19
TRX 0.12
JST 0.028
BTC 65348.61
ETH 3557.74
USDT 1.00
SBD 2.45