【问题标题】:PowerShell unable to write to csv file. Write-Host and Export-Csv produces 2 different outputs [duplicate]PowerShell 无法写入 csv 文件。 Write-Host 和 Export-Csv 产生 2 个不同的输出 [重复]
【发布时间】:2018-11-28 20:05:09
【问题描述】:

操作系统 - Windows 10

Powershell 版本 - 5.1.15063.1088

好的,我真的很努力地从逻辑上思考这个 PowerShell 脚本有什么问题,但显然无法得到一个想法并寻求一些帮助。所以这就是我想要做的,简单的 1+1

如果我正确理解了教程,在 PowerShell 中创建数组是这样的:

$someVariable = "PowerShell", "MowerShell", "HowerShell", "ZowerShell"

然后我只是想用逗号作为分隔符将这个东西写入 csv 文件,但首先在控制台输出中尝试一下

$someVariable | ConvertTo-Csv -NoTypeInformation

根据PowerShell 5.1 official documentation

...指定用于分隔属性值的分隔符。默认 是逗号 (,)。

所以不需要我想使用逗号作为分隔符的额外文字。一旦命令Write-Host $someVariable 被执行,我看到这个奇怪的输出:

 "Length" "10" "10" "10" "10"

这是什么?我想看到我的变量的值用简单的逗号分隔吗?所以从数字中我可以猜到脚本会计算每个单词中字母的数量 -

P o w e r S h e l l

  • 包含 10 个字母。

这是使用ConvertTo-Csv 命令计算字符串中字母数量的建议方法吗(以防我在下一次工作面试中获得 PowerShell 任务)?

将这些古怪的数据写入 csv 文件本身会导致更多意想不到的结果:

现在我完全不知道这些数字是什么了... 这是否可以将我的字符串作为 STRINGS 写入 csv 文件的一行而不是愚蠢的数字?

所需的输出是此条目作为 csv 文件中的标题:

"PowerShell","MowerShell","HowerShell","ZowerShell"

【问题讨论】:

  • CSV 转换对象。您的字符串实际上具有长度属性,这就是您在输出中看到它的原因。你的输出应该是什么样的? CSV 通常有标题。你的标题是什么?
  • 假设这些字符串值(在问题中)是我的标题......并且 $myVariable 不被认为是一个对象吗?
  • 一切都是对象。 ConvertTo-CSV 获取集合中的每个对象并为每个对象创建一行。此行具有对象所具有的每个属性的字段。有点。在这种情况下,您将向 ConvertTo-CSV 传递 String 对象的集合。 String 对象有一个属性,Length。所以输出的是一行,它是给出每个字段(属性)名称的标题。在这种情况下,只有长度字段(属性)。然后每个对象都有一行具有该属性的值(长度)。
  • 哦,至于为什么 Write-Host 和写入文件的呈现方式不同,我知道了。如果我这样做Write-Host $someVariable 我会得到PowerShell MowerShell HowerShell ZowerShell

标签: powershell csv converter


【解决方案1】:

输出读取“长度”,并且有一系列 10。您的每个字符串都是 10 个字符长(不包括双引号)。

长度可以通过多种方式计算。我不会说有一种建议的方法,只有适合您尝试做的方法。

要获取您在 csv 中发布的内容(无标题等)的文字文本,请尝试:

$someVariable | Out-File foo.csv

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-12-10
    • 2019-07-18
    • 2018-02-12
    • 2015-11-01
    • 2022-01-25
    • 1970-01-01
    • 2018-02-08
    相关资源
    最近更新 更多