【问题标题】:Get-WebConfiguration returns no resultGet-WebConfiguration 不返回任何结果
【发布时间】:2020-12-07 18:46:58
【问题描述】:

我想通过带有 powershell 的 Get-WebConfiguration 命令行开关从 web.config 文件中读取一些属性。

我已经用这个命令测试过

Get-WebConfiguration -PSPath 'iis:\sites\default test web site\referenz_ad' -filter "connectionStrings/add[@name='ApplicationDatabase']"

按预期返回以下内容:

connectionString      : server=...;uid=...;pwd=...;database=...;language=english
name                  : ApplicationDatabase
providerName          : System.Data.SqlClient
PSPath                : MACHINE/WEBROOT/APPHOST/Default Test Web Site/Referenz_AD
Location              : 
ConfigurationPathType : Location
ItemXPath             : /connectionStrings/add[@name='ApplicationDatabase']
Attributes            : {connectionString, name, providerName}
ChildElements         : {}
ElementTagName        : add
Methods               : 
Schema                : Microsoft.IIs.PowerShell.Framework.ConfigurationElementSchema

如果我想读取不同的节点属性

Get-WebConfiguration -PSPath 'iis:\sites\default test web site\referenz_ad' -filter "configSections/section[@name='dotless']"

我得到一个空结果(什么都没有显示),但也没有错误消息。路径正确写入 - 复制/粘贴以消除拼写错误。我也尝试过不同的路径。有些确实返回值大多数不是...

以下是 web.config 文件的示例,其中包含不返回结果的节点:

<configuration>
  <configSections>
    <section name="dotless" type="dotless.Core.configuration.DotlessConfigurationSectionHandler,dotless.Core" />
    <section name="storageConfig" type="Cubido.DMS.Storage.Common.Configuration.StorageConfigSection" />
    <sectionGroup name="system.web.webPages.razor" type="System.Web.WebPages.Razor.Configuration.RazorWebSectionGroup, System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=...">
      <section name="host" type="System.Web.WebPages.Razor.Configuration.HostSection, System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=..." requirePermission="false" />
      <section name="pages" type="System.Web.WebPages.Razor.Configuration.RazorPagesSection, System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=..." requirePermission="false" />
    </sectionGroup>
    <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=..." requirePermission="false" />
  </configSections>
.
.
.
</configuration>

有人知道为什么第二个命令没有返回结果吗?

问候 亚历克斯

【问题讨论】:

  • 我不熟悉Get-WebConfiguration(官方的help topic 也无济于事),但是——一般来说——如果-Filter 参数不匹配,那么命令安静地运行是正常的什么都不返回。该参数看起来像一个 XPath 查询 - 也许该查询找不到您期望它找到的内容。
  • IIS 是否可能没有从 web.config 文件中读取所有信息?我现在尝试在 IIS 上查找信息,但在那里也找不到。这可以解释为什么Get-WebConfiguration 找不到它...

标签: powershell iis


【解决方案1】:

dotless 是您的 HTTP 处理程序。这意味着您正在尝试获取 HTTP 处理程序的值。

为此,您可以尝试使用以下命令:

Get-WebHandler -PSPath 'IIS:\Sites\Default Web Site'

此命令返回所有 IIS 请求处理程序。

如果您想获取特定的处理程序详细信息,您可以使用名称等参数。

Get-WebHandler -PSPath 'IIS:\Sites\Default Web Site' -name "StaticFile"

更多细节可以参考这个链接:

Get-WebHandler

【讨论】:

  • 带有dotless的过滤器只是作为一个例子。尽管存在结果,但其他过滤器也存在问题。
  • @scarabeaus 你能分享一些例子吗?
  • @scarabeaus 实现这一点的唯一方法是使用 XML 库直接读取配置。
猜你喜欢
  • 1970-01-01
  • 2014-06-19
  • 1970-01-01
  • 1970-01-01
  • 2018-05-01
  • 2017-12-28
  • 2017-12-09
  • 2020-10-03
  • 2017-03-19
相关资源
最近更新 更多