Ich möchte in der Lage sein, das IIS-Konto für neue Websites so einzurichten, dass sie über Änderungsberechtigungen verfügen. Ich habe das folgende Skript:
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
}
Wenn ich es jedoch ausführe, erhalte ich folgende Fehler:
Set-Acl: Die Vertrauensstellung zwischen dieser Workstation und der primären Domäne ist fehlgeschlagen.
Ich denke, das liegt daran, dass IIS APPPOOL
es sich nicht um eine echte Domain handelt, sondern um ein seltsames Präfix für eine Art gefälschten Account. Gibt es eine korrekte Möglichkeit, auf dieses Konto zu verweisen, damit dies funktioniert?
AddAccessRule
: "Einige oder alle Identitätsreferenzen konnten nicht übersetzt werden." Irgendwelche Ideen, was das sein könnte?icacls
großartig für mich arbeiten, danke für die Hilfe! Am Ende hatte ich den Hauptteil der Funktion (dieselben Parameter wie oben)cmd /c icacls "$directory" /grant ("$domain\$username" + ':(OI)(CI)M') /t /c /q
(mit/t
rekursiver Bearbeitung des Verzeichnisses,/c
um nach Fehlern weiterzumachen und/q
Erfolgsmeldungen für jede Datei zu unterdrücken).So etwas sollte den Trick für Sie tun. Es sollte auch in der Lage sein, IIS APPPOOl \ Anything aufzulösen ...
quelle
SetAccessRule
: "Einige oder alle Identitätsreferenzen konnten nicht übersetzt werden."Set-AclOnPath .\Website "IIS APPPOOL\website.dev"
Wenn ich es jedoch erneut versuche, wird die andere Fehlermeldung angezeigt: "Die Vertrauensbeziehung zwischen dieser Workstation und der primären Domäne ist fehlgeschlagen."Das Folgende funktioniert in Windows 2012, um eine SID für die IIS-Site abzurufen. Es ist der IIS-Anbieter erforderlich, der das WebAdministration-Powershell-Modul verwendet. In diesem Artikel wird jedoch angegeben, dass es unter Windows 2008R2 funktioniert.
quelle
AddAccessRule
' mit '1' Argument (en): 'Einige oder alle Identitätsreferenzen konnten nicht übersetzt werden.'"NTAccount
Arbeit zu übersetzen .Import-Module WebAdministration
Sie das IIS-Laufwerk an, um das IIS-Laufwerk zu erhalten.Ab IIS 10 / Windows 10 / Server 2016 ist das WebAdministration-Modul veraltet, und es wird erwartet, dass stattdessen das neue IISAdministration Powershell-Modul verwendet wird. So übersetzen Sie die SID des Anwendungspools mithilfe des neuen Moduls in den virtuellen Benutzer:
quelle
Folgendes hat in Windows 2012 für mich funktioniert, die anderen Beispiele konnten nicht funktionieren:
quelle
$acl.SetAccessRuleProtection($True, $False)
da der letzte Parameter hier PreserveInheritance ist. Danke, dass du das gepostet hast!