删除 IIS 授权规则 "All users"

Delete IIS authorization rules "All users"

我试图从我们的一项 Web 服务中删除特定的 IIS 授权规则。 我需要删除模式为 "allow" 的用户 "all users"。

我试过使用这个命令

Clear-Webconfiguration -Filter /system.webServer/security/authorization -Force -PSPath 'IIS:\sites\IAI Application Customizer'

我可以删除所有创建的规则,但只有 "all users" 规则仍然存在。

希望你能帮我解决这个问题。 谢谢

或许您可以为该服务更改 web.config 文件。

<authorization>
    <remove accessType="Allow" users="*" />
</authorization>

这是我的解决方案。

$webConfigPath = "C:\Users\SOGL_D\Desktop\test.xml"

$xml = [xml](get-content $webConfigPath)   # Create XML object and open the web.config file


foreach( $item in  $xml.configuration."system.webServer".security.authorization.add )  # Traverse through all modules 
{ 
        if( $item.users -eq "*" )                          # Checking if the current module is to be removed 
        { 
           $xml.configuration."system.webServer".security.authorization.RemoveChild($item);   # Remove the desired module when found 
        } 
}

$xml.Save($webConfigPath)   # Save the updated web.config file

这是一个已知问题,我至少可以用 IIS7 重现:https://social.technet.microsoft.com/Forums/en-US/46cb1905-424e-4bf1-a9e4-514e274b7582/iis-clearwebconfiguration-cmdlet-needs-to-be-executed-twice-for-inherited-url-authorization-rules?forum=winserverpowershell

您必须调用 Clear-WebConfiguration 两次才能删除所有继承的规则。示例:

Clear-WebConfiguration -Filter "/system.webServer/security/authorization/add[@users='*' and @roles='' and @verbs='']" -PSPath "IIS:\Sites\my_site"
Clear-WebConfiguration -Filter "/system.webServer/security/authorization/add[@users='*' and @roles='' and @verbs='']" -PSPath "IIS:\Sites\my_site"
Add-WebConfiguration -Filter "/system.webServer/security/authorization" -Value (@{AccessType="Allow"; Users="my_user"; Permissions="Read, Write"}) -PSPath "IIS:\Sites\my_site"

这对我有用:

C:\Windows\System32\inetsrv\appcmd.exe set config /section:system.webServer/security/authorization /-"[accessType='Allow', users='*']"