我有一个返回URL列表的XML命令,例如
PS > $xml.rss.channel.item.link
http://example.com/20140704.exe
http://example.com/20140704.tar.xz
http://example.com/20140624.exe
http://example.com/20140624.tar.xz
http://example.com/20140507.tar.xz
从此列表中,我想返回第一个.tar.xz
行。我有这个
命令
$xml.rss.channel.item.link | ? {$_ -match '.tar.xz'} | select -first 1
但如果可能的话,我更喜欢只有一个管道的命令。
答案 0 :(得分:3)
你根本不需要管道:
(Select-Xml -Xml $xml -XPath "(//link[contains(.,'.tar.xz')])[1]").Node.InnerText
注意:XPath区分大小写。如果这是一个问题,您可以使用trick with translate() function并强制它忽略大小写。
答案 1 :(得分:1)
使用两个管道的另一种方法
$xml.rss.channel.item.link | Select-String .tar.xz | select -first 1
一根管子
($xml.rss.channel.item.link | Select-String .tar.xz)[0]