Назад | Перейти на главную страницу

Рекурсивно изменить владельца с помощью Powershell?

Я пытаюсь использовать 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 в моем профиле.