使用学生文本名称Infinity执行以下代码将返回无穷大符号,而不是实际文本。谁能解释这种情况的原因以及可以采取的纠正措施。
<Link>
$person="Infinity,One"
$personsplit=$person | ConvertFrom-String -Delimiter "," -PropertyNames firstname,surname
返回以下输出
现在的名字是一个符号,而不是文本数据?
预期将输出显示为
$personsplit
但是,它返回以下内容
first name surname
--------- -------
Infinity One
对于有兴趣的人,我当前正在运行以下版本的powershell
PS C:\ WINDOWS \ system32> $ psversiontable
名称值
---- -----
PS版本5.1.17763.503
PSEdition桌面
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
答案 0 :(得分:6)
您似乎发现{/ {1}}试图自动强制转换其创建的值的方式存在错误/怪癖,并且在您的情况下,似乎采用了字符串'Infinity',而强制转换为ConvertFrom-String
。
另一种更安全的解决方案是不使用[single]::PositiveInfinity
而是执行以下操作:
ConvertFrom-String
如果您不介意它们位于单独的变量中,也可以这样做:
$person="Infinity,One"
$personsplit = $person -split ','
[pscustomobject]@{
firstname = $personsplit[0]
lastname = $personsplit[1]
}