导出在Powershell中将数组对象匹配为CSV

时间:2015-07-29 16:02:38

标签: csv powershell

我有一个powershell脚本来查找特定实例,然后将它们导出为CSV。这是代码工作方式的一个例子

$items = "Hello Tim", "Hola Bob", "Hello Susan" 
$filter = $items | Select-String -Pattern "Hello"
$filter | Select-Object Line, Matches | Export-Csv "C:\log.csv"
Invoke-Item "C:\log.csv"

当我在PS中运行Select-Object时,它具有如下格式良好的信息:

powershell

但是,当我导出到CSV时,它会导出整个对象并将其写为以下字符串:System.Text.RegularExpressions.Match[]

csv export

在写入CSV时,如何让它只将第一场比赛或所有比赛的列表导出到一个字段?

2 个答案:

答案 0 :(得分:3)

以下是使用PSObject的一种方法:

$items = "Hello Tim", "Hola Bob", "Hello Susan" 
$filter = $items | Select-String -Pattern "Hello"
$filter | % {New-Object PSObject -property @{
  Line = $_.Line
  Matches = $_.Matches.Groups[0].Value}
} | Export-Csv "C:\log.csv" -NoTypeInformation

答案 1 :(得分:1)

请注意,Matches是一个可能会导致导出到csv的问题的数组 尝试将数组连接到具有选定分隔符的字符串。我在我的例子中使用了“::”。

$filter | Select Line, @{Expression={$_.Matches -join "::"}; Label="Matches"} | Export-Csv "C:\log.csv"