我在下面有这个脚本,根据属性value
筛选出xml列表:
gci $path | Select-Xml -XPATH "//Order[contains(@Value, '0')]"
我正在尝试过滤掉“零值”的XML。问题是,当我针对我的源运行脚本时,它返回值中包含“0”的所有内容。如何将过滤器更改为仅过滤“0”,即。没有大于零的值?我想有一个过滤器可以将“包含”替换为“匹配”之类的东西,但我已经尝试过了。在互联网上找不到任何替代品。
答案 0 :(得分:1)
使用Where-Object
条件-not
过滤器排除XPath表达式产生匹配的所有文件:
Get-ChildItem $path | Where-Object {
-not (Select-Xml -Path $_.FullName -XPath "//Order[contains(@value, '0')]")
}
请注意,这可能会产生错误否定(例如,如果属性value
包含类似10,201,......的值)。如果您只想排除属性value
正好为0的文件,则可以使用数字比较来执行此操作:
Get-ChildItem $path | Where-Object {
-not (Select-Xml -Path $_.FullName -XPath "//Order[@value = 0]"
}