我有一个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
时,它具有如下格式良好的信息:
但是,当我导出到CSV时,它会导出整个对象并将其写为以下字符串:System.Text.RegularExpressions.Match[]
在写入CSV时,如何让它只将第一场比赛或所有比赛的列表导出到一个字段?
答案 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"