Используйте AppCmd ​​для LIST CONFIG только в APPHOST - PullRequest
1 голос
/ 25 января 2012

У меня есть требование использовать 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 в папке (конкретная ошибка не важна, поскольку он читает web.config WebApp вместо 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 для раздела anonymousAuthentication WebApplication, который находится под веб-сайтом, изнутри Powershell (Get-WebConfiguration похоже, он использует только WebApp web.config), это было бы просто потрясающе и высоко ценится!

1 Ответ

4 голосов
/ 26 января 2012

Вот как это сделать в 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()
...