【发布时间】: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