使用powershell和htmlAgilityPack输出集合

时间:2012-01-27 16:25:39

标签: powershell powershell-v2.0 html-agility-pack

首先,是的,我是脚本和PowerShell的菜鸟,因为这将变得非常明显。在我学习的过程中,我一直在使用这里的脚本:http://www.leeholmes.com/blog/2010/03/05/html-agility-pack-rocks-your-screen-scraping-world/

这就是我到目前为止:

add-type -Path 'C:\Program Files (x86)\htmlAgilityPack\HtmlAgilityPack.dll'
$doc = New-Object HtmlAgilityPack.HtmlDocument 
$result = $doc.Load("C:\scipts\test.html") 
$texts = $doc.DocumentNode.SelectNodes("//table[@class='dataTable']/tbody/tr/td[1]/a[1]") 
$result = $texts | % {
$testText = $_
$Platform = $testtext.innertext
New-Object PsObject -Property @{ Platform = $Platform} | Select Platform 
}
$result | Sort Platform | out-string

这给了我正在寻找的物品。

*挑战*

我试图将该输出作为单个字符串输入变量,每个项目后跟一个逗号。例如Item1,Item2,Item3等......

任何帮助或解释都会受到赞赏,因为我用Google搜索自己的眼睛并不一定能代表我找到的东西。

谢谢!

1 个答案:

答案 0 :(得分:2)

来自powershell帮助(get-help about_join):

  

下图显示了join运算符的语法。

<String[]> -Join <Delimiter>

要解决您的问题,您需要:

  1. 创建一个包含您要加入的字符串的字符串数组:

    $arrayofstrings = $result | Sort Platform | foreach-object {$_.Platform}
    
  2. 使用逗号作为分隔符加入字符串:

    $joinedstring = $arrayofstrings -join ", "
    
  3. $joinedstring将包含Item1, Item2, Item3