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


10

Я намагаюся використовувати 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?

Відповіді:


18

Команда takeown робить саме те, що ви намагаєтесь зробити. Це звичайна утиліта Windows.

Цей фрагмент застосує право власності до поточного користувача, але ви можете встановити його будь-якому користувачеві, якого ви хочете.

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

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

Якщо у вас виникли проблеми, переконайтеся, що у вас запущено вікно cmd / powershell з правами адміністратора. Те саме стосується інших відповідей щодо специфічної відповіді.


1
Схоже, цей сопляний соплі працює для встановлення власника групи (крім "Адміністраторів")
Gert van den Berg

5

Командлет Set-ACL буде приймати параметр шляху з труби, тому рекомендованим способом є передача вмісту каталогу для встановлення власника на кожен елемент:

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

Це рекурсивно встановить власника на всі папки / файли в темп-каталозі мого профілю.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.