2012-01-27 71 views
1

首先,是的,我是腳本和PowerShell的noob,因爲這將變得非常明顯。在我的努力學習,我一直與一個腳本從這裏:http://www.leeholmes.com/blog/2010/03/05/html-agility-pack-rocks-your-screen-scraping-world/使用powershell和htmlAgilityPack收集輸出

這是我迄今:

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,Item 3等...

任何幫助或解釋將不勝感激,因爲我已經谷歌Google眼鏡,並不一定忍受我找到的東西。

謝謝!

+0

我不知道是否有任何內置運營商PowerShell來做到這一點,但['的string.join()'](http://msdn.microsoft.com/ EN-US /庫/ system.string.join.aspx)。 – 2012-01-27 16:28:12

+0

我曾嘗試使用powershell變體的-split和-join以取得任何成功 – jsan 2012-01-28 00:45:58

回答

2

從PowerShell幫助(get-help about_join):

下圖顯示了連接操作的語法。

<String[]> -Join <Delimiter> 

解決你的問題,你需要:

  1. 創建一個包含您要加入的字符串字符串數組:

    $arrayofstrings = $result | Sort Platform | foreach-object {$_.Platform} 
    
  2. 使用連接字符串逗號作爲分隔符:

    $joinedstring = $arrayofstrings -join ", " 
    

$joinedstring將包含Item1, Item2, Item3

+0

我可能會使用'$ result |選擇-exp Platform | sort'。 – Joey 2012-01-28 09:06:43

+0

工作!非常感謝Jon。我以前曾嘗試加入,但我沒有正確使用它或在正確的地方使用它。 – jsan 2012-01-28 15:22:50