使用Powershell递归更改所有者?


9

我正在尝试使用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

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

Answers:


17

takeown命令完全可以执行您要执行的操作。这是一个常规的Windows实用程序。

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

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

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

如果遇到麻烦,请确保您正在以管理员权限运行cmd / powershell窗口。同样适用于其他Powershell特定答案。


1
这个doe鼻涕似乎可以将所有者设置为一个组(“管理员”除外)
Gert van den Berg

5

Set-ACL cmdlet将从管道中获取path参数,因此建议的方法是通过管道传递目录内容以在每个项目上设置所有者:

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

这将以递归方式在我的配置文件中temp目录中的所有文件夹/文件上设置所有者。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.