Changer de propriétaire récursivement avec Powershell?

9

J'essaie d'utiliser Powershell pour changer le propriétaire d'un dossier, récursivement.

J'utilise essentiellement ce 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

Cela changera la propriété au premier niveau, mais pas pour les sous-dossiers ou fichiers. Existe-t-il un moyen d'étendre la portée à tout le contenu de MyFolder?

Mikael Grönfelt
la source

Réponses:

17

La commande de retrait fait exactement ce que vous essayez de faire. C'est un utilitaire Windows standard.

Cet extrait appliquera la propriété à l'utilisateur actuel, mais vous pouvez le définir pour n'importe quel utilisateur de votre choix.

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

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

Si vous rencontrez des problèmes, assurez-vous que vous exécutez la fenêtre cmd / powershell avec les autorisations d'administrateur. Il en va de même pour l'autre réponse spécifique à PowerShell.

homme effrayant
la source
1
Cette morve de biche semble fonctionner pour définir le propriétaire sur un groupe (autre que "Administrateurs")
Gert van den Berg
5

L'applet de commande Set-ACL prendra le paramètre de chemin du tube, donc la méthode recommandée est de diriger le contenu d'un répertoire pour définir le propriétaire sur chaque élément:

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

Cela définira récursivement le propriétaire sur tous les dossiers / fichiers du répertoire temporaire de mon profil.

Goyuix
la source