Ubah pemilik secara rekursif dengan Powershell?

9

Saya mencoba menggunakan Powershell untuk mengubah pemilik folder, secara rekursif.

Saya pada dasarnya menggunakan kode ini:

$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

Ini akan mengubah kepemilikan di level pertama, tetapi tidak untuk subfolder atau file apa pun. Apakah ada cara untuk memperluas cakupan ke semua konten MyFolder?

Mikael Grönfelt
sumber

Jawaban:

17

Perintah takeown melakukan persis apa yang Anda coba lakukan. Ini adalah utilitas windows biasa.

Cuplikan ini akan menerapkan kepemilikan kepada pengguna saat ini, tetapi Anda dapat mengaturnya untuk setiap pengguna yang Anda inginkan.

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

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

Jika Anda mengalami masalah pastikan Anda menjalankan jendela cmd / powershell dengan izin administrator. Hal yang sama berlaku untuk jawaban khusus powershell lainnya.

orang menakutkan
sumber
1
Tikus ingus ini tampaknya bekerja untuk mengatur pemilik ke grup (Selain "Administrator")
Gert van den Berg
5

Cmdlet Set-ACL akan mengambil parameter lintasan dari pipa, jadi cara yang disarankan adalah menyalurkan isi direktori untuk mengatur pemilik pada setiap item:

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

Itu secara rekursif akan mengatur pemilik pada semua folder / file di direktori temp di profil saya.

Goyuix
sumber