【发布时间】:2019-06-03 07:49:41
【问题描述】:
使用学生文本名称 Infinity 执行以下代码会返回无穷大符号而不是实际文本。任何人都可以解释为什么会出现这种情况以及可以采取哪些措施来纠正。
$person="Infinity,One"
$personsplit=$person | ConvertFrom-String -Delimiter "," -PropertyNames firstname,surname
$personsplit 返回以下输出
名字现在是符号而不是文本数据?
预计输出为
first name surname
--------- -------
Infinity One
但是,它返回以下内容
firstname surname
--------- -------
∞ One
对于我目前正在运行以下版本的 powershell 感兴趣的人
PS C:\WINDOWS\system32> $psversiontable
Name Value
---- -----
PSVersion 5.1.17763.503
PSEdition Desktop
PSCompatibleVersions {1.0, 2.0, 3.0, 4.0...}
BuildVersion 10.0.17763.503
CLRVersion 4.0.30319.42000
WSManStackVersion 3.0
PSRemotingProtocolVersion 2.3
SerializationVersion 1.1.0.1
【问题讨论】:
-
该 cmdlet 中的解析系统将
Infinity视为数学术语,并将属性类型设置为float。我的设置将Infinity作为浮点文本名称,而不是作为无穷大符号。你可以做至少两件事之一......提供一个模板,为该属性设置[string]类型或使用ConvertFrom-CSV并给cmdlet一个-Header行而不是-PropertyNames行。 -
您可以运行
$PSVersionTable并将其添加到您的问题中吗?我无法重现它(PS 5.1)。 -
@robdy - 仔细看看你得到的输出。
Infinity单词它右 对齐,而One单词它左 对齐。即第 1 个数字布局和第 2 个文本布局。另外,如果您在每个属性上运行.GetType(),第一个将是float...真是奇怪的故障... [grin] -
@Lee_Dailey 你说的对,谢谢!
-
@robdy - 不客气!很高兴能帮上一点忙……[咧嘴]