Powershell Out文件没有';我不能为CSV工作

Powershell Out文件没有';我不能为CSV工作,powershell,Powershell,我有以下代码: $databaseContents = "col1,col2,col3,col4" $theDatabaseFile = "C:\NewFolder\Database.csv $databaseContents | Out-File $theDatabaseFile 但是,当我在Excel中打开csv文件时,单元格A1中有col1、col2、col3、col4,而不是单元格A1中的col1、B1中的col2等 我注意到一些奇怪的事情: 如果我在记事本中打开文件,将文本复制到另一

我有以下代码:

$databaseContents = "col1,col2,col3,col4"
$theDatabaseFile = "C:\NewFolder\Database.csv
$databaseContents | Out-File $theDatabaseFile
但是,当我在Excel中打开csv文件时,单元格A1中有col1、col2、col3、col4,而不是单元格A1中的col1、B1中的col2等

我注意到一些奇怪的事情: 如果我在记事本中打开文件,将文本复制到另一个记事本实例中,并将其另存为Database1.csv,然后在Excel中打开它,它将按预期显示

如何获取
输出文件
命令将其保存为.csv文件,并按预期将其内容分为4列

编辑: 我注意到,如果我使用
设置内容
而不是
输出文件
,则csv文件将在Excel中正确显示。 有人知道这是为什么吗?

这也适用于:

$databaseContents = "col1;col2;col3;col4"
$theDatabaseFile = "C:\temp\Database.csv"
$databaseContents | Out-File $theDatabaseFile -Encoding ascii

默认情况下,Excel接缝中的CSV分隔符为“;”和
输出文件
另存为unicode强制
ASCII
接缝给出您要查找的结果。

为什么它对Excel有影响我不清楚,但归结到结果输出文件的编码-unicode(在不起作用的情况下)与ASCII(在起作用的情况下)

@JPBlanc的替代方法之所以有效,是因为它将输出文件的编码设置为ASCII,而原始示例(隐式)将输出文件的编码设置为Unicode

只需将
-编码ascii
添加到原始示例中也可以:

$databaseContents = "col1,col2,col3,col4"
$theDatabaseFile = "C:\NewFolder\Database.csv
$databaseContents | Out-File $theDatabaseFile -Encoding ascii
将显式的
-编码unicode
添加到原始示例中会产生与您遇到的相同的错误结果:

$databaseContents = "col1,col2,col3,col4"
$theDatabaseFile = "C:\NewFolder\Database.csv
$databaseContents | Out-File $theDatabaseFile -Encoding unicode

这基本上就是暗中发生的事情。

我遇到了与向后\u Dave相同的问题,就像他一样,使用
设置内容
而不是
输出文件
命令对我有效:

#Build $temp String
$temp = "$scriptApplication;$applicationName;$type;$description;$maxSessions;$enabled;$tempParams`n"

#Write $temp String to $fichierCsv file
"$temp" | Set-Content $fichierCsv

我尝试使用了JPBlancJ0e3gan的解决方案,但没有成功(
-编码ascii
选项):我想知道为什么。

我非常确定默认分隔符是逗号,因此它被称为“逗号分隔值”。我试着用分号,但没用。我所做的尝试是使用-编码ascii,同时保留逗号,而不是用分号替换它们,效果很好。你完全正确。但当我将Excel文件保存为CSV时,默认情况下使用Excel;这就是我写这封信的原因。奇怪的是,对我来说,当我将它另存为时,它会使用逗号。csv这不是我的情况。也许是因为我用了一个法语版本的anks作为答案!所以基本上,如果excel读取的文本是以ascii以外的任何编码方式编码的,它会将其视为纯文本吗?例如,它不会将逗号理解为分隔值。@Backwards\u戴夫:这是一个合理的假设,但我承认我没有足够精妙地说清楚。在单元格
A1
A2
A3
、和
A4
中生成的原始
Out文件
,如果不双击它在Excel中打开,csv工作正常(即分别显示
col1
col2
col3
、和
col4
),然后通过Excel打开它并执行文本导入向导。也许有相关Excel专业知识的人可以肯定地说,在这样一个简单的场景中,为什么它关心Unicode与ASCII。