【问题标题】:Export Matches array object to CSV in Powershell在 Powershell 中将匹配数组对象导出为 CSV
【发布时间】:2015-07-29 16:02:37
【问题描述】:

我有一个 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 时,如何让它仅将第一个匹配项或所有匹配项的列表导出到单个字段中?

【问题讨论】:

    标签: csv powershell


    【解决方案1】:

    这是使用 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
    

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-03-08
        • 2018-09-15
        • 2018-03-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-01-29
        相关资源
        最近更新 更多