使用 Powershell 递归更改所有者?

Mik*_*elt 12 powershell permissions ntfs access-control-list

我正在尝试使用 Powershell 递归更改文件夹的所有者。

我基本上使用这个代码:

$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
Run Code Online (Sandbox Code Playgroud)

这将更改第一级的所有权,但不会更改任何子文件夹或文件。有没有办法将范围扩展到 的所有内容MyFolder

sca*_*man 23

takeown 命令完全符合您的要求。这是一个常规的 Windows 实用程序。

此代码段将所有权应用于当前用户,但您可以将其设置为您想要的任何用户。

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

takeown /f "c:\folder\subfolder" /r
Run Code Online (Sandbox Code Playgroud)

如果遇到问题,请确保以管理员权限运行 cmd/powershell 窗口。这同样适用于其他 powershell 特定答案。

  • 这似乎不适用于将所有者设置为组(“管理员”除外) (2认同)

Goy*_*uix 6

Set-ACL cmdlet 将从管道中获取路径参数,因此推荐的方法是通过管道传输目录的内容以设置每个项目的所有者:

dir -r c:\Users\goyuix\temp | set-acl -aclobject $acl1
Run Code Online (Sandbox Code Playgroud)

这将递归地设置我的配置文件中临时目录中所有文件夹/文件的所有者。