Zmienić właściciela rekurencyjnie za pomocą Powershell?

9

Próbuję użyć programu PowerShell do rekursywnej zmiany właściciela folderu.

Zasadniczo używam tego kodu:

$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

Spowoduje to zmianę własności na pierwszym poziomie, ale nie dotyczy żadnych podfolderów lub plików. Czy istnieje sposób na rozszerzenie zakresu na całą treść MyFolder?

Mikael Grönfelt
źródło

Odpowiedzi:

17

Polecenie takeown robi dokładnie to, co próbujesz zrobić. Jest to zwykłe narzędzie systemu Windows.

Ten fragment kodu będzie stosował własność do bieżącego użytkownika, ale możesz ustawić go dla dowolnego użytkownika.

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

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

Jeśli napotkasz problemy, upewnij się, że korzystasz z okna cmd / powershell z uprawnieniami administratora. To samo dotyczy innej odpowiedzi specyficznej dla PowerShell.

straszny mężczyzna
źródło
1
Wygląda na to, że ten królica nie działa na rzecz ustawienia właściciela grupy (innej niż „Administratorzy”)
Gert van den Berg
5

Polecenie cmdlet Set-ACL pobierze parametr ścieżki z potoku, więc zalecanym sposobem jest potokowanie zawartości katalogu, aby ustawić właściciela dla każdego elementu:

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

To rekurencyjnie ustawi właściciela na wszystkie foldery / pliki w katalogu tymczasowym w moim profilu.

Goyuix
źródło