我知道如何通过以下命令为IIS网站设置此项:
Set-WebConfigurationProperty -filter "/system.webServer/security/authentication/windowsAuthentication" -name enabled -value true -PSPath "IIS:\" -location $siteName
但我想为该网站内的应用程序设置它。例如,我有一个名为" MySite"的IIS网站。在里面,有两个应用程序。我想为一个启用Windows身份验证而不为另一个启用Windows身份验证。因此,对于两者都将启用站点级别的启用,这是我不想要的。
答案 0 :(得分:31)
我遇到了处理锁定部分的问题,并且接受的答案建议打开一个GUI来解决它,我试图首先避免使用PowerShell。
启用Windows身份验证并禁用匿名身份验证
$iisAppName = "MyApp"
Write-Host Disable anonymous authentication
Set-WebConfigurationProperty -Filter "/system.webServer/security/authentication/anonymousAuthentication" -Name Enabled -Value False -PSPath IIS:\ -Location "Default Web Site/$iisAppName"
Write-Host Enable windows authentication
Set-WebConfigurationProperty -Filter "/system.webServer/security/authentication/windowsAuthentication" -Name Enabled -Value True -PSPath IIS:\ -Location "Default Web Site/$iisAppName"
如IIS documentation中所述:
验证部分通常是锁定的,即无法写入 到web.config文件但必须写入中心 改为applicationhost.config文件。
我们必须使用-PSPath
和-Location
参数。
Set-WebConfigurationProperty -filter /system.webServer/security/authentication/windowsAuthentication -name enabled -value true -PSPath IIS:\ -location DemoSite/DemoApp
答案 1 :(得分:21)
您不需要单独的-PSPath
和-Location
参数。你可以像这样组合它们:
-PSPath "IIS:\Sites\$SiteName\$AppName"
所以实际的命令看起来像这样:
Set-WebConfigurationProperty -Filter "/system.webServer/security/authentication/windowsAuthentication" -Name Enabled -Value True -PSPath "IIS:\Sites\$SiteName\$AppName"
请注意,您可能会遇到此错误:
Set-WebConfigurationProperty:此配置部分不能在此路径中使用。当该部分被锁定在父级别时会发生这种情况。默认情况下锁定(overrideModeDefault =“Deny”),或者由overrideMode =“Deny”或遗留allowOverride =“false”的位置标记显式设置。
Tomfanning在ServerFault上提供了解决方案here。我在这里重复了他的步骤: