【问题标题】:Formatting tables in PowerShell to export as CSV在 PowerShell 中格式化表格以导出为 CSV
【发布时间】:2019-01-25 10:46:46
【问题描述】:

我严重睡眠不足和压力很大,所以这可能非常简单,但我仍然无法弄清楚。

我想导出各种内容,例如服务、进程、防火墙规则、本地用户,以及我需要的任何 CSV 文件,但每当我将其导出为 CSV 时,当我打开它时,它在 Excel 中只有 1 列。

我只想将输出按列分隔,以便在 Excel 中进行简单的概述。

Get-Service | Sort-Object Status | Format-Table -AutoSize | Out-String -Width 10000 | Out-File -Append "C:\temp\Test.csv"

但这是我得到的输出: Services

如果我使用 Export-CSV CMD 会发生这种情况:Services

【问题讨论】:

  • Format-Table 创建固定宽度的表格,而不是 Comma S分隔的 V 值。您需要在文本导入向导中尊重它。

标签: powershell csv


【解决方案1】:

PowerShell 的默认 CSV 分隔符是逗号。要使 Excel 正确读取 CSV,请使用 -Delimiter 参数将其更改为分号:

Get-Service | sort Status | Export-Csv "C:\temp\Test.csv" -NoTypeInfo -Delim ";"

或者使用-UseCulture 开关(感谢@JosefZ),它使用与 Excel 相同的基于区域的 ListSeperator 设置:

Get-Service | sort Status | Export-Csv "C:\temp\Test.csv" -NoTypeInfo -UseCulture

【讨论】:

  • 是的,您的第二张图片是 Excel 问题,而不是导出问题。
  • 是的,就是这样!!非常感谢 Marsze,如果你在阿姆斯特丹,我会请你喝咖啡:D
  • 应用-UseCulture 开关而不是-Delimiter ";"
【解决方案2】:

那为什么不直接导出到 csv 呢?

Get-Service | Select Name,DisplayName,Status | Sort-Object Status | Export-Csv "C:\temp\Test.csv" -NoTypeInformation

【讨论】:

  • 同样的事情发生了,我也添加了一个截图
  • @LeviHen 省略| Select Name,DisplayName,Status 部分以获取所有属性。
  • @JosefZ 实际上我已经这样做了,因为我想要所有的信息!! :D 不,但说真的,我想要从 powershell 中得到的只是给我一个可以在 Excel 中打开的格式化表格,然后将其拖放到 Confluence 或类似的东西上以记录客户环境。我可以为自己使用 TXT(那里的格式看起来很棒)但是有些人需要在 Excel 中通读它,所以我现在坚持使用它:D
  • 我在 2 个系统上尝试了这个,这两个系统都具有股票窗口和股票办公室(2010 年和 2016 年)。它可能与时间/位置有关,因为当我开始使用这些设置时,我可以让它工作,问题是我不能(不应该)更改生产服务器上的这些设置;)无论如何,Marsze 的解决方案上面带有 -delim ";"为我和这个目的工作。
  • 地区设置的有趣差异。我想知道欧洲分隔符默认值是否是分号,因为欧元定价 €3,99.. 在英国这里是一个点 £3.99,所以逗号不会拆分价格列。
猜你喜欢
  • 2020-12-05
  • 2021-02-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-01-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多