Используйте AppCmd ​​для СПИСКА КОНФИГУРАЦИИ только в APPHOST

У меня есть требование использовать powershell для настройки IIS7.5 в веб-приложениях, в которых еще не развернут код (возможно, вообще, возможно, существуют старые/неработающие web.configs) в файловой системе. Я хотел бы иметь возможность делать все это на уровне APPHOST. (Примечание внизу об использовании Powershell > AppCmd).

Я могу УСТАНОВИТЬ все значения правильно, однако, будучи несколько усердным, я хотел бы также проверить, были ли значения установлены правильно, извлекая их после установки.

Вот сценарий: я могу установить это значение с помощью AppCmd, чтобы настройка применялась на уровне APPHOST с помощью флага /Commit:APPHOST. Однако я не нашел способа ПРОЧИТАТЬ значения исключительно на уровне APPHOST.

Установка кода прошла успешно:

C:\Windows\System32\inetsrv\appcmd.exe set config "webSiteName/webAppName" -section:system.webServer/security/authentication/anonymousAuthentication /enabled:"True" /commit:apphost

Однако я не могу найти способ прочитать значения с помощью AppCmd ​​(или Powershell): запуск следующего AppCmd ​​возвращает ошибку из-за поврежденного ранее существовавшего файла web.config в папке (конкретная ошибка не важна, так как он читает WebApp web.config вместо ApplicationHost.config/APPHOST):

C:\Windows\System32\inetsrv\appcmd.exe list config "MACHINE/WEBROOT/APPHOST/webSiteName/webAppName" -section:system.webServer/security/authentication/anonymousAuthentication
ERROR ( message:Configuration error
Filename: \\?\c:\inetpub\wwwroot\webSiteName\webAppName\web.config
Line Number: 254
Description: The configuration section 'system.runtime.caching' cannot be read because it is missing a section declaration
. )

Примечание. Я бы предпочел делать все это в Powershell вместо использования AppCmd, поэтому, если у кого-то есть синтаксис для изменения параметров APPHOST для раздела анонимной аутентификации веб-приложения, которое находится под веб-сайтом, изнутри Powershell (Get-WebConfiguration, кажется, только используйте WebApp web.config), это было бы совершенно потрясающе и очень ценно!


person JonnyG    schedule 25.01.2012    source источник


Ответы (1)


Вот как это сделать в PowerShell:

[Reflection.Assembly]::Load(
"Microsoft.Web.Administration, Version=7.0.0.0, 
Culture=Neutral, PublicKeyToken=31bf3856ad364e35") > $null

$serverManager = New-Object Microsoft.Web.Administration.ServerManager
$config = $serverManager.GetApplicationHostConfiguration()
$anonymousAuthenticationSection = $config.GetSection("system.webServer/security/authentication/anonymousAuthentication", "simpleasp.net")
Write-Host "Current value: " $anonymousAuthenticationSection["enabled"]

# Now set new value
$anonymousAuthenticationSection["enabled"] = $true

$serverManager.CommitChanges()
person Kev    schedule 26.01.2012
comment
Если вы работаете на рабочем столе без ServerManager, возможно, вам придется попробовать что-то вроде этого: github. com/jefflomax/configure-iis-webapps-powershell - person AUSTX_RJL; 09.11.2013
comment
@AUTX_RJL - почему вы не можете использовать ServerManager на рабочем столе? - person Kev; 11.11.2013