次のコマンドでIIS Webサイトにこれを設定する方法を知っています。
Set-WebConfigurationProperty -filter "/system.webServer/security/authentication/windowsAuthentication" -name enabled -value true -PSPath "IIS:\" -location $siteName
しかし、私はそのウェブサイト内のアプリケーションにそれを設定したいと思います。たとえば、IISという名前の「MySite」というWebサイトがあり、その中に2つのアプリケーションがあります。一方に対してはWindows認証を有効にし、他方に対してはWindows認証を有効にしたいです。両方で有効になっていて、それは私が望んでいないことです。
個別の-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"を使用してロケーションタグによって明示的に設定されます。
ServerFaultのTomfanningがソリューションを提供しました here 。ここで彼の手順を繰り返しました。
ロックされたセクションを処理する問題があり、受け入れられた答えは、それを解決するために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ドキュメント に記載されているとおり:
認証セクションは通常ロックされています。つまり、web.configファイルに書き込むことはできませんが、代わりに中央のapplicationhost.configファイルに書き込む必要があります。
-PSPath
および-Location
パラメーターを使用する必要があります。
Set-WebConfigurationProperty -filter /system.webServer/security/authentication/windowsAuthentication -name enabled -value true -PSPath IIS:\ -location DemoSite/DemoApp
Windows認証の有効化は、インストールされている場合にのみ機能します。
install-windowsfeature web-windows-auth