PowerShell: - 匹配似乎奏效了



我正在尝试PowerShell和XML。不幸的是,我有一个我不明白的问题。我尝试测试节点再次$ null的值。但这似乎给出了错误的答案。

这是我要做的:file xml.xml

<?xml version="1.0" encoding="UTF-8"?>
 <report>
  <row>
    <pProductNr>5128.10.00</pProductNr>
  </row>
 </report>

然后我正在尝试:

[xml]$x=.xml.xml
$x.report.row.pProductNr -match $Null

结果是" true"。但是它看起来不是空的。
我在Powershell很新,看来我没有理解的魔术...我在做什么错?

to 读取XML文件的内容,例如xml.xml到XML DOM中,您必须使用Get-Content

[xml] $x = Get-Content -Raw .xml.xml

您可以使用.符号在您尝试的时候钻入文档

但是,PowerShell的-match操作员旨在与正则表达式合作 strings
如果您通过$null,则PowerShell将其串联到'',即空字符串,该字符串等于匹配 nothing 的正则表达式。
因此, ... -match $null匹配任何东西 - 因此毫无意义。
通常,-match-除非用^$明确锚定 - 匹配LHS的 substring

要测试元素的内容是否为空还是不存在,只需使用-eq ''

 $x.report.row.pProductNr -eq ''

警告:如果 Set-StrictMode -Version 2或更高版本有效,则尝试引用不存在的属性会导致 error 。。

相关内容

  • 没有找到相关文章

最新更新