2017-03-24 1 views
1
New-Item -Type Directory -Path "C:\MyFolder" 
$Acl = Get-Acl "C:\MyFolder" 
$Ar = New-Object System.Security.AccessControl.FileSystemAccessRule("username", "FullControl", "Allow") 
$Acl.SetAccessRule($Ar) 
Set-Acl -Path "C:\MyFolder" -AclObject $Acl 

Salut, quand je suis arrivé le code ci-dessus et appliqué à l'aide de mes propres paramètres - les entrées compte utilisateur sont ajoutées pour le dossier mais pas autorisations sont appliquées (aucun tic tac)l'application des autorisations ACL à l'aide de PowerShell Set-Acl

Quelqu'un peut-il aider avec pourquoi cela pourrait être?

Merci

+0

Votre extrait fonctionne pour moi. Avez-vous un message d'erreur? Une exception UnauthorizedAccessException? – Clijsters

+0

Pas d'erreurs - les comptes sont ajoutés aux permanentes dans le dossier - vous pouvez les voir là mais aucune permanente n'est cochée. Seule différence entre ce qui est en cours d'exécution est je référence une variable avec le compte d'utilisateur stocké dans - mais cela fonctionne comme - sinon, le compte ne serait pas affiché là-bas. – Royston

+0

Il est difficile de comprendre votre question. J'espère avoir compris. S'il vous plaît envisager d'examiner votre question et ajouter des informations supplémentaires et des captures d'écran pour que les autres comprennent ce que vous voulez dire. (Je verrais personnellement cette question mieux placé sur le super-utilisateur) – Clijsters

Répondre

2

Votre commentaire décrit le comportement suivant:

Votre script PowerShell réussit mais si vous vérifiez les autorisations avec les propriétés des explorateurs de dialogue, vous verrez les éléments suivants:

permissions with unfilled checkboxes

Ceci est assez confus car une requête PowerShell confirmera:

PS> Get-Acl .|fl 


Path : Microsoft.PowerShell.Core\FileSystem::D:\temp\myfolder 
Owner : clijsters\clijsters 
Group : clijsters\Kein 
Access : clijsters\NEWUSER Allow FullControl 
     VORDEFINIERT\Administratoren Allow FullControl 
     VORDEFINIERT\Administratoren Allow 268435456 
     NT-AUTORITÄT\SYSTEM Allow FullControl 
     [...] 

Votre liste de contrôle d'accès a été modifiée. Si vous faites défiler la liste de vos cases à cocher, vous remarquerez que "Autorisations spéciales" est cochée et si vous cliquez sur "Avancé" vous remarquerez, vos permissions sont définies.

EDIT:
Comme mentionné par @AnsgarWiechers, j'ai raté une partie décrivant pourquoi les autorisations ajoutées avec New-Object System.Security.AccessControl.FileSystemAccessRule("username", "FullControl", "Allow") sont répertoriés comme autorisations spéciales.

Comme décrit sur MSDN, FileSystemAccessRule a 4 constructeurs, où certains acceptent InheritanceFlags et PropagationFlags (par exemple this one correspond à vos besoins). Si vous les utilisez et définissez un comportement d'héritage, les autorisations apparaîtront comme normales.

+0

Merci! Quelle façon totalement cool d'ajouter des autorisations de dossier dans le cadre d'une solution scriptée plus large. – Royston

+2

La raison pour laquelle les autorisations sont affichées en tant que "autorisations spéciales" est que vous ne définissez pas l'héritage. Les autorisations sont donc appliquées à "ce dossier uniquement". Ajoutez l'héritage de conteneur et d'objet à l'ACE et les permissions apparaîtront comme contrôle total "régulier". –

+0

Je ne comprends pas pourquoi cette réponse est _unaccepted_. Jus tsaw coïncidence sur mon profil. @Royston: Pourriez-vous expliquer, que je peux améliorer ma réponse? – Clijsters