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?

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.


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.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.