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"
}
整个日期不在防病毒日期列
下的输出
答案 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-Csv
或Export-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