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
看来您发现了一个错误/怪癖,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)
| 归档时间: |
|
| 查看次数: |
71 次 |
| 最近记录: |