CSV将日期分成两个单元格

时间:2015-03-06 15:42:40

标签: powershell csv

PowerShell程序以“月日,年”格式从固定数据库中读取数据。

CSV在一个单元格中输出Month和Day,在下一个单元格中输出Year。

如何解决这个问题?我尝试在$i[6]$av_date附近放置单引号和双引号,但它仍然无法正常工作

代码snippit

foreach ($i in $sql_output){
    $computer_name = $i[0]
    $ip = $i[1]
    $computer_domain = $i[2]
    $computer_os = $i[3]
    $current_group = $i[4]
    $sep_version = $i[5]
    $av_date = $i[6]
    Add-Content D:\Script\Reports\IP_Status_$date.csv "$computer_name,$ip,$computer_domain,$computer_os,$current_group,$sep_version,$av_date"
}

整个日期不在防病毒日期列

下的输出

enter image description here

3 个答案:

答案 0 :(得分:2)

尝试在Add-Content之前的行上插入此内容(注意三重引号):

$av_date = """$av_date"""

然后继续:

Add-Content D:\Script\Reports\IP_Status_$date.csv "$computer_name,$ip,$computer_domain,$computer_os,$current_group,$sep_version,$av_date"

日期中的逗号要求该字段用引号括起来,这是实现此目的的一种方法。

答案 1 :(得分:1)

似乎无论您使用的是哪种电子表格(您都不提及它),它都会忽略引号,并且只在解析列时查找逗号。

通常将内容放在双引号中会处理此问题。您是否尝试过如下所示的引号(\"围绕av_date引用)?

Add-Content D:\Script\Reports\IP_Status_$date.csv "$computer_name,$ip,$computer_domain,$computer_os,$current_group,$sep_version,\"$av_date\""

也许你也可以尝试在日期中转义逗号,这样你就可以使用Mar 05\, 2015而不是正常的逗号。

要么是这样,要么将日期的格式更改为Mar-05-2015或类似的不使用逗号的内容。

答案 2 :(得分:1)

您不应该将PowerShell内置的功能混合在一起。只需构建一个对象数组,如果您的逗号问题需要,请使用Export-CsvExport-Csv -Delimiter ';'

一个快速示例,展示如何迭代某些输入对象并构建输出:

1..10 | foreach {
    New-Object PSObject -Property @{
        Index = $_
        String = "Just some text, with a comma $(3 * $_)"
        Date = (Get-Date).AddDays($_)
    }
} | Export-Csv test.csv -NoTypeInformation