【问题标题】:Exporting data in object to single cell in csv将对象中的数据导出到csv中的单个单元格
【发布时间】:2019-01-02 10:29:36
【问题描述】:

我需要将存储在以下对象的名称部分中的数据导出到 csv 中的 SINGLE CELL。

$localp = Get-Printer | where Shared -eq $false

但每当我这样做时:

$localp.Name | export-csv -path "test.csv"

我明白了:

#TYPE System.String
长度
18
29
22
3
9

【问题讨论】:

  • 我得到了同样的奇怪行为。将您的命令更改为 $localp |选择姓名 | export-csv -Path test.csv 虽然有效。
  • 看起来这可能是设计使然。使用点分表示法返回一个 [string] 对象,其唯一属性是长度。使用 select 方法返回一个 CimInstance 对象,其唯一属性是 Name

标签: powershell export-to-excel


【解决方案1】:

试试

$localp | Select-Object Name | Export-Csv -Path "test.csv" -NoTypeInformation

来自this 回复Ansgar

Export-Csv 导出对象属性及其值的表。 由于您的脚本正在生成字符串对象,并且唯一的属性 他们有的是长度,这就是你得到的。

【讨论】:

  • 成功了!现在的问题是它将每个名称输出到他们自己的行,而不是我需要它做的单个单元格。它还包括我不需要的“名称”字段
【解决方案2】:

您似乎不需要标题和单个单元格,
IMO 不是正确的 csv 文件。

应该如何将打印机彼此分开?

这一行:

('"{0}"' -f ((Get-Printer | where Shared -eq $false).Name -join ',')

创建一个像这样的双引号文本:

"Send To OneNote 2016,Microsoft XPS Document Writer,Microsoft Print to PDF,Fax"

您可以使用Set-Content 写入文件

$Printers = [PSCustomObject]@{
    Printers = (Get-Printer | where Shared -eq $false).Name -join ','}
$Printers |Export-Csv '.\test.csv' -NoTypeInformation

会产生一个文件:

PS> Get-Content .\test.csv
"Printers"
"Send To OneNote 2016,Microsoft XPS Document Writer,Microsoft Print to PDF,Fax"

修改后编辑

-加入“`n”
PS> $printers

Printers
--------
Send To OneNote 2016...

PS> $printers|fl

Printers : Send To OneNote 2016
           Microsoft XPS Document Writer
           Microsoft Print to PDF
           Fax

PS> $printers |export-csv .\test.csv -notype
PS> gc .\test.csv
"Printers"
"Send To OneNote 2016
Microsoft XPS Document Writer
Microsoft Print to PDF
Fax"

【讨论】:

  • 标题是硬编码的,因为我得到了 50 多个不同的对象组,并且需要将每个对象的数据导出到它自己的单元格(一个单元格中的打印机列表,已安装应用程序的列表在另一个等)
  • 有什么办法可以用换行符加入他们吗?
  • 哪个变种? -join "`n"
  • LotPings 只是在第一个打印机名称之后切断所有内容
  • 只有当你以错误的方式输出它时,才能看到改变的答案。
猜你喜欢
  • 2019-07-04
  • 2020-09-28
  • 1970-01-01
  • 1970-01-01
  • 2015-06-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-06-17
相关资源
最近更新 更多