【问题标题】:how to export powershel result to csv如何将powershell结果导出到csv
【发布时间】:2019-07-12 11:31:24
【问题描述】:

我想导出我已经在 ForEach-Object 中过滤的内容。问题是我无法导出过滤后的数据。

我尝试了以下方法: $getTapes.rows | Export-Csv C:\\123\\123456.txt 但是这已经导出了所有没有过滤器的信息。

$getTapes = Invoke-RestMethod -Method GET -ContentType $content -Uri $Uri -Headers @{'Authorization' = $Authorization}
$today = Get-Date
$getTapes.rows | ForEach-Object {
    $tape = $_;    
    if ( $tape.custom_fields.Ueberschreibschutz.value -ge $today ) {
        Write-Host "Treffer ID=" $tape.asset_tag " Name=" $tape.name " SNR=" $tape.serial " Mediensatz=" $tape.custom_fields.Mediensatz.value
    }
}
$getTapes.rows |export-Csv C:\\123\\123456.txt

我希望:

Treffer ID= 1  Name= 12  SNR= 12345  Mediensatz= M 
Treffer ID= 2  Name= 32  SNR= 54321  Mediensatz= W

【问题讨论】:

    标签: powershell foreach export-csv


    【解决方案1】:

    您不应使用 Write-Host 来收集数据。那只是在屏幕上输出像素。相反,您应该创建一个自定义对象,以后可以随意使用......就像这样:

        $Result = $getTapes.rows | ForEach-Object { 
        if ( $_.custom_fields.Ueberschreibschutz.value -ge $today ) {
            [PSCustomObject]@{
                TrefferID  = $_.asset_tag
                Name       = $_.name
                SNR        = $_.serial
                Mediensatz = $_.custom_fields.Mediensatz.value
            }
        }
    }
    
    $Result | Export-Csv -Path C:\123\123456.csv -NoTypeInformation
    

    【讨论】:

      【解决方案2】:

      Write-host 除了在控制台中显示结果外,什么都不做,因此它不会修改或删除$getTapes.rows 中不需要的内容。 相反,您可以定义一个变量$result 并使用Foreach-Object 迭代$getTapes.rows,并在满足您的if 条件时添加结果。

      试试这个:

      $getTapes = Invoke-RestMethod -Method GET -ContentType $content -Uri $Uri -Headers @{'Authorization' = $Authorization}
      $today = Get-Date
      $getTapes.rows | ForEach-Object -begin {$result = "" } {
          $tape = $_;    
          if ( $tape.custom_fields.Ueberschreibschutz.value -ge $today ) {
              $result += "Treffer ID= $($tape.asset_tag) Name= $($tape.name) SNR= $($tape.serial) Mediensatz= $($tape.custom_fields.Mediensatz.value)`n"
          }
      } -end {$result | export-Csv C:\123\123456.txt}
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-11-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多