Change owner recursively with Powershell?

71,644

Solution 1

The takeown command does exactly what you're trying to do. It's a regular windows utility.

This snippet will apply ownership to the current user, but you can set it to any user you want.

http://technet.microsoft.com/en-us/library/cc753024(v=ws.10).aspx

takeown /f "c:\folder\subfolder" /r

If you run into trouble make sure you are running the cmd/powershell window with administrator permissions. Same applies to the other powershell specific answer.

Solution 2

The Set-ACL cmdlet will take the path parameter from the pipe, so the recommended way is to pipe the contents of a directory to set the owner on each item:

dir -r c:\Users\goyuix\temp | set-acl -aclobject $acl1

That will recursively set the owner on all the folders/files in the temp directory in my profile.

Share:
71,644
Mikael Grönfelt
Author by

Mikael Grönfelt

Updated on September 18, 2022

Comments

  • Mikael Grönfelt
    Mikael Grönfelt almost 2 years

    I'm trying to use Powershell to change owner of a folder, recursively.

    I'm basically using this code:

    $acct1 = New-Object System.Security.Principal.NTAccount('DOMAIN\Enterprise Admins')
    $profilefolder = Get-Item MyFolder
    $acl1 = $profilefolder.GetAccessControl()
    $acl1.SetOwner($acct1)
    set-acl -aclobject $acl1 -path MyFolder
    

    This will change ownership at the first level, but not for any subfolders or files. Is there a way to extend the scope to all content of MyFolder?

  • Gert van den Berg
    Gert van den Berg over 7 years
    This doe snot seem to work for setting the owner to a group (Other than "Administrators")
  • argonym
    argonym over 3 years
    I think this only works if all contained files and folders shall get the same ACLs.