<p>Tout d’abord, utilisez Set-Acl comme ceci, car le chemin du répertoire est le premier argument positionnel :</p>
<pre><code class="lang-auto">Set-Acl $directory $acl
</code></pre>
<p>Ensuite, vous devez créer l’objet utilisateur avec un seul argument :</p>
<pre><code class="lang-auto">$user = New-Object System.Security.Principal.NTAccount("$domain\$username")
</code></pre>
<p><strong>MISE À JOUR :</strong> Il semble qu’il n’accepte pas « IIS APPPOOL\AppPoolName » comme identifiant NTAccount. Il y a maintenant deux façons d’accomplir ce que vous essayez de faire :</p>
<ul>
<li></li>
</ul>
<p>Créer un nouvel objet SID avec le SID des identités AppPool et le traduire en NTAccount, comme ceci : <a href="http://iformattable.blogspot.com/2007/12/convert-sid-to-ntaccount-with.html">http://iformattable.blogspot.com/2007/12/convert-sid-to-ntaccount-with.html</a>, et vous devriez pouvoir le traiter comme n’importe quel autre objet NTAccount. Si vous avez toujours besoin de pouvoir passer des noms domaine/utilisateur pour de vrais comptes, intégrez une logique simple qui utilise par défaut le SID AppPool si le nom d’utilisateur est « AweSomeAppPool » et que le domaine est vide, par exemple.</p>
<ul>
<li></li>
</ul>
<p>Utilisez PowerShell pour invoquer icacls.exe, et utilisez-le pour accorder/révoquer les permissions souhaitées, comme ceci (d’abord la forme icacls normale depuis l’invite de commandes, puis PowerShell, notez la différence) :</p>
<p><code>icacls.exe test.txt /grant "IIS AppPool\DefaultAppPool"🙁OI)(CI)M</code></p>
<p><code>cmd /c icacls test.txt /grant "IIS AppPool\DefaultAppPool🙁OI)(CI)M"</code></p>
<p>Si vous optez pour la seconde option, assurez-vous de les tester manuellement d’abord, je n’ai pas eu l’occasion de tester ces exemples spécifiques moi-même, mais cela devrait fonctionner.</p>