【问题标题】:CSV Output UnreadableCSV 输出不可读
【发布时间】:2021-05-16 11:34:39
【问题描述】:

我正在尝试将这个简单脚本的结果导出到 .csv 文件。我得到了结果,但它要么返回有关结果数据的信息,要么返回一长串混乱的数据,我确定如何正确解析。

<# 
Will ping all devices in list and display results as a simple UP or DOWN, color coded Red or Green.
#>


$Names = Get-Content -Path "C:\TestFolder\GetNames.txt"

$Output = @() 

foreach ($name in $names)
{

    if (Test-Connection -ComputerName $name -Count 1 -ErrorAction SilentlyContinue)
        {
            $Result1 += "$name, up" 
            Write-Host "$name, up" -ForegroundColor Green
           
        }

    else
        
        {
          $Result2 += "$name, down" 
          Write-Host "$name, down" -ForegroundColor Red

        }
    }

$Output += $Result1, $Result2
$Output = $Output | Select-Object 

$Output | Export-Csv -Path 'C:\psCSVFiles\mycsv.csv' -NoTypeInformation

返回结果: 长度 49768 25081

我在这里做错了什么?谢谢

【问题讨论】:

  • 欢迎来到 SO。如果您想知道 CSV 输出,$Output 是一个包含 2 个字符串($Result1 和 $Result2)的数组。导出为 CSV 时,它会显示 $Output 中包含的每个字符串的长度。不是很有用,我同意。有关更强大的 CSV 输出,请参阅下面的 Mattias 答案。干杯!

标签: powershell csv export


【解决方案1】:

不要尝试手动“格式化”输出字符串 - Export-Csv 会处理该部分。

您要做的是创建 对象,其属性对应于 CSV 中所需的列:

$Names = Get-Content -Path "C:\TestFolder\GetNames.txt"

$Output = foreach ($name in $names) {
  # test if computer is reachable/pingable
  $isUp = Test-Connection -ComputerName $name -Count 1 -ErrorAction SilentlyContinue -Quiet

  # construct output object with results
  [pscustomobject]@{
    ComputerName = $name
    Status = if($isUp){ 'Up' }else{ 'Down' }
  }
}

# Export to CSV
$Output |Export-Csv -Path 'C:\psCSVFiles\mycsv.csv' -NoTypeInformation

或者,使用Select-Object 直接使用管道修改输入字符串:

Get-Content -Path "C:\TestFolder\GetNames.txt" |Select @{Name='ComputerName';Expression={$_}},@{Name='Status';Expression={if(Test-Connection -ComputerName $_ -Count 1 -ErrorAction SilentlyContinue -Quiet){'Up'}else{'Down'}}} |Export-Csv -Path 'C:\psCSVFiles\mycsv.csv' -NoTypeInformation

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-07
    • 2012-09-03
    • 1970-01-01
    • 1970-01-01
    • 2016-12-04
    • 2014-09-06
    • 2011-01-07
    • 1970-01-01
    相关资源
    最近更新 更多