我试图用PowerShell来recursion地改变一个文件夹的所有者。
我基本上使用这个代码:
$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所有内容?
takeown命令完全是你正在做的事情。 这是一个常规的Windows实用程序。
这段代码会将所有权应用于当前用户,但是您可以将其设置为您想要的任何用户。
http://technet.microsoft.com/en-us/library/cc753024(v=ws.10).aspx
takeown /f "c:\folder\subfolder" /r
如果遇到麻烦,请确保使用pipe理员权限运行cmd / powershell窗口。 同样适用于其他PowerShell的具体答案。
Set-ACL cmdlet将从pipe道获取path参数,因此推荐的方法是pipe道目录的内容以在每个项目上设置所有者:
dir -rc:\Users\goyuix\temp | set-acl -aclobject $acl1
这将recursion地将所有者设置在我的configuration文件的临时目录中的所有文件夹/文件。