【发布时间】:2019-11-20 03:41:45
【问题描述】:
我一直在尝试通过获取和修改applicationHost.config 文件中的基本设置来自学IISAdministration module。我正在努力理解如何使用WebAdministration module 来执行与下面的示例等效的 IISAdministration。我目前仍在阅读this great article,了解 IIS 配置的工作原理,但我只是不明白。
工作 WebAdministration 示例:
#Gets the Log File format set in the applicationHost.config file
Get-WebConfigurationProperty -PSPath 'MACHINE/WEBROOT/APPHOST' -Filter "system.applicationHost/sites/siteDefaults/logFile" -Name "logFormat"
这是我使用 IISAdministraton 命令想到的,但我收到“警告:配置集合元素不存在”。我试图设置的设置确实存在,所以我一定做错了什么。任何指导或解释将不胜感激
$section = Get-IISConfigSection -SectionPath "system.applicationHost/sites"
Get-IISConfigCollection $section | Get-IISConfigCollectionElement -ConfigAttribute @{"Name"="logFormat"}
更新:
我找到了一种使用 IISAdministration 访问 logFormat 属性的方法。我真诚地希望这不是访问配置文件中嵌套属性的自然方式,而我恰好偶然发现了在此模块中实现我的目标的众多方法之一。我仍在使用这些命令并阅读有关它们的更多信息。
Get-IISConfigSection -SectionPath "system.applicationHost/sites" | Get-IISConfigElement -ChildElementName "siteDefaults" | Get-IISConfigElement -ChildElementName "logFile" | Get-IISConfigAttributeValue -AttributeName "logFormat"
更新:
我发现使用 IISAdministration 访问 logFormat 属性的另一种方法,但我仍然不太满意。
$manager = Get-IISServerManager
$config = $manager.GetApplicationHostConfiguration()
$section = $config.GetSection("system.applicationHost/sites")
$siteDefaults = $section.GetChildElement("siteDefaults")
$siteDefaults.GetChildElement("logFile")["logFormat"]
【问题讨论】:
-
您应该假定 WebAdministration 已过时,并避免在您的任何脚本中使用它。
-
@LexLi 我强烈反对任何人都认为它已经过时。它完成了与 IISAdmin 完全相同的工作,但没有那么优雅。我承认返回类型在使用 IISAdmin 返回时更有用,这也是我学习 IISAdministration 的部分原因。这是一篇关于主题octopus.com/blog/iis-powershell 的精彩文章。最新版本的 Windows Server 仍支持 WebAdmin
-
支持很多东西,比如经典的 ASP,但是当新设计明显取代时,为什么还要继续使用它们。
-
我听到你的声音并且在大多数情况下会同意,但说该模块已过时实际上是错误的。
标签: powershell iis windows-server-2012-r2