如何将文本限定符添加到PowerShell CSV导出中?

时间:2018-04-12 03:31:04

标签: powershell csv powershell-v3.0

使用PowerShell导出到csv文件时,有没有办法包含文本限定符,例如"Column 1"|"Column 2"

在下面的脚本中,我删除了已经在文件中传输的文本限定符,因为第一列没有任何奇怪的原因。

Get-MsolUser -all | 
Where-Object {($_.IsLicensed -eq "True") -and ($_.Title -notlike "Volunteer") } | 
Select-Object Firstname, LastName, Department, Title | 
ConvertTo-Csv -NoTypeInformation -Delimiter "|"| 
% { $_ -replace '","', "|"} | % { $_ -replace '"', ""} | out-file "$path\$file_name" -fo -en ascii 

2 个答案:

答案 0 :(得分:1)

认为输出可能正如您所期望的那样,但您可能正在查看Excel中的输出文件而不是文本编辑器(我使用的是Notepad ++)。当我尝试重现这个时,我使用了以下代码并在文本编辑器中查看了输出文件,并且输出的每个列和行都具有预期的文本限定符。但是,在Excel中查看同一文件时,Excel会显示第一列,就好像它没有文本限定符一样。这是我跑来测试的代码:

"[a known UPN from my tenant]","[a known UPN from my tenant]"| 
foreach-object {Get-MsolUser -UserPrincipalName $_} | 
Where-Object {($_.IsLicensed -eq "True") -and ($_.Title -notlike "Volunteer")} | 
Select-Object Firstname, LastName, Department, Title | 
ConvertTo-Csv -NoTypeInformation -Delimiter "|" | 
out-file $path\$file_name" -fo -en ascii 

答案 1 :(得分:0)

第一列中缺少文字限定符的问题首先发生在'之前。我指定了-delimiter参数,我上面的代码是修复该问题的两种方法的修复和混搭,并且有点多余。

我可以使用以下脚本生成预期结果:

    $MyData = import-csv \\TestPath\licenses_v2.csv -delimiter '|' | 
    select-object FirstName,LastName,Department,Title,@{expression={'Office 365 AD'}};
    Write-DbaDataTable -sqlinstance $server -database $database -table $table -inputobject $MyData -KeepNulls;   

enter image description here