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?

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.


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.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.