【问题标题】:How to add text qualifiers to a PowerShell CSV export?如何将文本限定符添加到 PowerShell CSV 导出?
【发布时间】:2018-09-22 01:46:46
【问题描述】:

有没有办法在使用 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 

【问题讨论】:

  • 您需要添加它们,但您必须删除它们,因为它们在那里?什么?我能得到一些输入的例子,你得到的输出和你想要的输出吗?

标签: powershell csv powershell-3.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 

【讨论】:

  • 当我出于某种原因使用它时,我会遇到奇怪的错误,因为它似乎每一列都有文本限定符,除了第一列。
  • 您是否碰巧在某个地方的流程中使用 Excel?如果是这样,我怀疑实际上是意外删除了限定词的罪魁祸首。前几天我碰巧遇到了这个问题,并学到了与这个主题相关的几件事:donatstudios.com/Falsehoods-Programmers-Believe-About-CSVs
  • 很棒的文章,谢谢你,这是我的误会,我想既然文件在导出后就嵌入了分隔符,它们不需要指定,分隔符与文本限定符,但事实并非如此。必须指定分隔符,否则它出现的文本限定符会出现意外行为。
【解决方案2】:

第一列中缺少文本限定符的问题首先发生在我指定 -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;   

【讨论】:

    猜你喜欢
    • 2016-05-02
    • 1970-01-01
    • 2022-01-01
    • 1970-01-01
    • 2016-03-29
    • 2017-01-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多