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

Dan*_*kin 4 powershell powershell-3.0

使用学生文本名称Infinity执行以下代码将返回无穷大符号,而不是实际文本。任何人都可以解释这种情况的原因以及可以采取的纠正措施。

$person="Infinity,One"
$personsplit=$person | ConvertFrom-String -Delimiter "," -PropertyNames firstname,surname
Run Code Online (Sandbox Code Playgroud)

$personsplit 返回以下输出

现在的名字是符号而不是文本数据?

预期看到的输出为

first name surname
--------- -------
 Infinity One 
Run Code Online (Sandbox Code Playgroud)

但是,它返回以下内容

firstname surname  
--------- -------   
     ?    One
Run Code Online (Sandbox Code Playgroud)

对于感兴趣的任何人,Im当前正在运行以下版本的powershell

PS C:\ WINDOWS \ system32> $ psversiontable

名称值
---- -----
PSVersion 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

Mar*_*agg 6

看来您发现了一个错误/怪癖,ConvertFrom-String试图自动转换其创建的值,在您的情况下,似乎采用了字符串'Infinity',而转换为as [single]::PositiveInfinity

另一种更安全的解决方案是不使用ConvertFrom-String并执行以下操作:

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

[pscustomobject]@{
    firstname = $personsplit[0]
    lastname = $personsplit[1]
}
Run Code Online (Sandbox Code Playgroud)

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

$firstname,$lastname = $person -split ','
Run Code Online (Sandbox Code Playgroud)