ConvertFrom-String返回符号而不是文本

时间:2019-06-03 07:49:41

标签: powershell powershell-3.0

使用学生文本名称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

1 个答案:

答案 0 :(得分:6)

您似乎发现{/ {1}}试图自动强制转换其创建的值的方式存在错误/怪癖,并且在您的情况下,似乎采用了字符串'Infinity',而强制转换为ConvertFrom-String

另一种更安全的解决方案是不使用[single]::PositiveInfinity而是执行以下操作:

ConvertFrom-String

如果您不介意它们位于单独的变量中,也可以这样做:

$person="Infinity,One"
$personsplit = $person -split ','

[pscustomobject]@{
    firstname = $personsplit[0]
    lastname = $personsplit[1]
}