Сменить владельца рекурсивно с помощью 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?

Микаэль Грёнфельт
источник

Ответы:

17

Команда takeown делает именно то, что вы пытаетесь сделать. Это обычная утилита для Windows.

Этот фрагмент будет применять права собственности к текущему пользователю, но вы можете установить его для любого пользователя.

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

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

Если у вас возникли проблемы, убедитесь, что вы запускаете окно cmd / powershell с правами администратора. То же относится и к другому конкретному ответу PowerShell.

scaryman
источник
1
Похоже, эти сопли работают для того, чтобы установить владельца в группу (кроме «Администраторы»)
Герт ван ден Берг
5

Командлет Set-ACL будет брать параметр пути из канала, поэтому рекомендуемый способ - передать содержимое каталога, чтобы установить владельца для каждого элемента:

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

Это рекурсивно установит владельца для всех папок / файлов во временной папке в моем профиле.

Goyuix
источник