Я пытаюсь использовать 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
?
Команда takeown делает именно то, что вы пытаетесь сделать. Это обычная утилита для Windows.
Этот фрагмент применит право владения к текущему пользователю, но вы можете установить его для любого пользователя, которого хотите.
http://technet.microsoft.com/en-us/library/cc753024(v=ws.10).aspx
takeown /f "c:\folder\subfolder" /r
Если у вас возникнут проблемы, убедитесь, что вы запускаете окно cmd / powershell с правами администратора. То же самое относится и к другому конкретному ответу PowerShell.
Командлет Set-ACL берет параметр пути из канала, поэтому рекомендуется передать содержимое каталога по конвейеру, чтобы установить владельца для каждого элемента:
dir -r c:\Users\goyuix\temp | set-acl -aclobject $acl1
Это рекурсивно установит владельца для всех папок / файлов в каталоге temp в моем профиле.