Je veux pouvoir définir le compte IIS pour que les nouveaux sites Web aient des autorisations de modification. J'ai le script suivant:
function Set-ModifyPermission ($directory, $username, $domain = 'IIS APPPOOL') {
$inherit = [system.security.accesscontrol.InheritanceFlags]"ContainerInherit, ObjectInherit"
$propagation = [system.security.accesscontrol.PropagationFlags]"None"
$acl = Get-Acl $directory
$user = New-Object System.Security.Principal.NTAccount($domain, $username )
$accessrule = New-Object system.security.AccessControl.FileSystemAccessRule($user, "Modify", $inherit, $propagation, "Allow")
$acl.AddAccessRule($accessrule)
set-acl -aclobject $acl $directory
}
Cependant, lorsque je l'exécute, j'obtiens des erreurs comme celle-ci:
Set-Acl: la relation d'approbation entre ce poste de travail et le domaine principal a échoué.
Je pense que c'est parce que ce n'est IIS APPPOOL
pas un vrai domaine, mais c'est un préfixe étrange sur un genre de faux compte. Existe-t-il une manière correcte de se référer à ce compte afin que je puisse faire ce travail?
AddAccessRule
: "Certaines ou toutes les références d'identité n'ont pas pu être traduites." Des idées ce que cela pourrait être?icacls
travailler très bien pour moi, merci pour l'aide! Je me suis retrouvé avec le corps de la fonction (mêmes paramètres que ci-dessus) étantcmd /c icacls "$directory" /grant ("$domain\$username" + ':(OI)(CI)M') /t /c /q
(avec/t
pour travailler récursivement sur le répertoire,/c
pour continuer après les erreurs et/q
pour supprimer les messages de réussite pour chaque fichier).Quelque chose comme ça devrait faire l'affaire pour vous. Il devrait également pouvoir résoudre IIS APPPOOl \ Anything ...
la source
SetAccessRule
: "Certaines ou toutes les références d'identité n'ont pas pu être traduites."Set-AclOnPath .\Website "IIS APPPOOL\website.dev"
, mais lorsque je réessaye, j'obtiens une erreur différente: "La relation d'approbation entre ce poste de travail et le domaine principal a échoué."Les éléments suivants fonctionnent dans Windows 2012 pour obtenir un SID pour le site IIS. Il nécessite le fournisseur IIS qui utilise le module PowerShell WebAdministration, mais cet article indique qu'il fonctionnera sur Windows 2008R2.
la source
AddAccessRule
' avec des arguments '1': 'Certaines ou toutes les références d'identité n'ont pas pu être traduites.'"NTAccount
travail.Import-Module WebAdministration
pour obtenir le lecteur IIS auprès du fournisseur IIS.Depuis IIS 10 / Windows 10 / Server 2016, le module WebAdministration est obsolète et nous devrions utiliser à la place le nouveau module IISAdministration Powershell. Voici comment obtenir le SID du pool d'applications traduit pour l'utilisateur virtuel à l'aide du nouveau module:
la source
Ce qui suit a fonctionné pour moi dans Windows 2012, n'a pas pu faire fonctionner les autres exemples:
la source
$acl.SetAccessRuleProtection($True, $False)
car le dernier paramètre ici est PreserveInheritance. Merci d'avoir posté ça!