Powershell如何确定xml中是否存在特定属性

时间:2014-04-09 15:46:59

标签: xml powershell

我过去能够做类似的任务,但我不明白为什么它对这个xml不起作用。我正在使用powershell来读取requestFiltering的iis设置,但是当我在xml中搜索时,节点“fileExtensions”不被视为节点。这是xml。

<system.webServer>
  <security>
    <requestFiltering>
      <fileExtensions allowUnlisted="true" applyToWebDAV="true">

        <add fileExtension=".config" allowed="true" />        
      </fileExtensions>
      <requestLimits>
        <headerLimits>
        </headerLimits>
      </requestLimits>
      <verbs allowUnlisted="true" applyToWebDAV="true">
      </verbs>
      <hiddenSegments applyToWebDAV="true">
        <add segment="web.config" />

      </hiddenSegments>
      <alwaysAllowedUrls>
      </alwaysAllowedUrls>
      <alwaysAllowedQueryStrings>
      </alwaysAllowedQueryStrings>
      <denyUrlSequences>
      </denyUrlSequences>
      <denyQueryStringSequences>
      </denyQueryStringSequences>
      <filteringRules>
      </filteringRules>
    </requestFiltering>
  </security>

$ val =上面的XML:

$xml = [xml]($val)
$node = $xml.SelectSingleNode("//*[local-name() = 'fileExtensions']")

$ node为空/空。怎么会?

1 个答案:

答案 0 :(得分:1)

使用更简单的XPath查询有什么问题:

$node = $xml.SelectSingleNode('//fileExtensions')

FWIW您的原始查询适用于PowerShell v4。