Besitzer rekursiv mit Powershell wechseln?

9

Ich versuche, Powershell zu verwenden, um den Besitzer eines Ordners rekursiv zu ändern.

Ich benutze im Grunde diesen Code:

$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

Dadurch wird der Besitz auf der ersten Ebene geändert, jedoch nicht für Unterordner oder Dateien. Gibt es eine Möglichkeit, den Umfang auf alle Inhalte von auszudehnen MyFolder?

Mikael Grönfelt
quelle

Antworten:

16

Der Befehl zum Herunterfahren macht genau das, was Sie versuchen. Es ist ein normales Windows-Dienstprogramm.

Dieses Snippet wendet den Besitz auf den aktuellen Benutzer an, Sie können ihn jedoch auf einen beliebigen Benutzer festlegen.

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

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

Wenn Sie auf Probleme stoßen, stellen Sie sicher, dass Sie das cmd / Powershell-Fenster mit Administratorrechten ausführen. Gleiches gilt für die andere Powershell-spezifische Antwort.

gruseliger Mann
quelle
1
Dieser Rotz scheint zu funktionieren, um den Besitzer einer Gruppe zuzuordnen (außer "Administratoren")
Gert van den Berg
5

Das Cmdlet Set-ACL übernimmt den Pfadparameter aus der Pipe. Daher wird empfohlen, den Inhalt eines Verzeichnisses weiterzuleiten, um den Eigentümer für jedes Element festzulegen:

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

Dadurch wird der Eigentümer rekursiv für alle Ordner / Dateien im temporären Verzeichnis in meinem Profil festgelegt.

Goyuix
quelle