仅在APPHOST中使用AppCmd LIST CONFIG

时间:2012-01-25 16:03:50

标签: powershell iis-7 iis-7.5 appcmd

我需要使用powershell在WebApplications上配置IIS7.5,这些WebApplications尚未部署代码(可能存在,可能存在旧的/损坏的web.configs)到文件系统。我希望能够在APPHOST级别完成所有这些工作。 (请注意底部使用Powershell> AppCmd)。

我可以正确地设置所有值,但是,有点勤奋,我也想通过在设置后检索它们来验证设置正确的值。

以下是该方案: 我可以使用AppCmd设置此值,因此使用/ Commit:APPHOST标志在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,因此,如果任何人都具有修改WebApplication的anonymousAuthentication部分的APPHOST设置的语法,该部分位于网站下,来自Powershell内部(Get-WebConfiguration似乎只使用WebApp web.config),这将是非常棒的,非常感谢!

1 个答案:

答案 0 :(得分:4)

以下是在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()