Cambiare ricorsivamente il proprietario con Powershell?


9

Sto cercando di usare Powershell per cambiare il proprietario di una cartella, in modo ricorsivo.

In pratica sto usando questo codice:

$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

Ciò cambierà la proprietà al primo livello, ma non per eventuali sottocartelle o file. C'è un modo per estendere l'ambito di applicazione a tutti i contenuti di MyFolder?

Risposte:


17

Il comando takeown fa esattamente quello che stai cercando di fare. È una normale utility di Windows.

Questo frammento applicherà la proprietà all'utente corrente, ma puoi impostarlo su qualsiasi utente desideri.

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

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

In caso di problemi, assicurarsi di eseguire la finestra cmd / powershell con le autorizzazioni di amministratore. Lo stesso vale per l'altra risposta specifica di PowerShell.


1
Questo moccio sembra funzionare per impostare il proprietario in un gruppo (diverso da "Amministratori")
Gert van den Berg

5

Il cmdlet Set-ACL prenderà il parametro path dalla pipe, quindi il modo consigliato è reindirizzare il contenuto di una directory per impostare il proprietario su ciascun elemento:

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

Ciò imposterà ricorsivamente il proprietario su tutte le cartelle / file nella directory temporanea nel mio profilo.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.