Powershell Out-File对CSV不起作用

Bac*_*ave 7 powershell

我有以下代码:

$databaseContents = "col1,col2,col3,col4"
$theDatabaseFile = "C:\NewFolder\Database.csv
$databaseContents | Out-File $theDatabaseFile
Run Code Online (Sandbox Code Playgroud)

但是当我在Excel中打开csv文件时,它在单元格A1中有col1,col2,col3,col4而不是单元格A1中的col1,单元格B1中的col2等.

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

如何让Out-File命令行开关将其保存为.csv文件,其中包含4列中的内容?

编辑:我注意到,如果我使用Set-Content而不是Out-File,csv文件然后在Excel中正确显示.有人知道为什么吗?

J0e*_*gan 10

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

PowerShell Out-File与Set-Content到CSV文件

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

只需添加-Encoding ascii到原始示例也可以正常工作:

$databaseContents = "col1,col2,col3,col4"
$theDatabaseFile = "C:\NewFolder\Database.csv
$databaseContents | Out-File $theDatabaseFile -Encoding ascii
Run Code Online (Sandbox Code Playgroud)

-Encoding unicode在原始示例中添加显式内容会产生您遇到的相同破坏结果:

$databaseContents = "col1,col2,col3,col4"
$theDatabaseFile = "C:\NewFolder\Database.csv
$databaseContents | Out-File $theDatabaseFile -Encoding unicode
Run Code Online (Sandbox Code Playgroud)

这基本上是隐含发生的事情.