Convertfrom-string 删除前导零

Convertfrom-string removes leading zeros

我在使用 Convertfrom-String cmdlet 时遇到问题

$value = 'something:009' 
$value | ConvertFrom-String -Delimiter ':'

输出:

P1        P2
--        --
something  9

我想要的输出是

P1        P2
--        --
something  009

有人有什么想法吗?

提前致谢。

我建议完全避免 ConvertFrom-String - 它会执行您在使用 -Delimiter 时无法控制的类型转换,正如您所经历的那样,并且其示例驱动的基于模板的解析很尴尬。

附带说明:ConvertFrom-String 在跨平台 PowerShell Core edition 中不可用。

在您的简单情况下,请改用 ConvertFrom-Csv

$value = 'something:009' 
$value | ConvertFrom-Csv -Delimiter ':' -Header P1, P2

ConvertFrom-Csv 将所有值按原样读取为字符串(使用字符串输入;字段值周围的双引号被删除)。

mklement0 提出最佳方案。你也可以这样做:

解决方案 1:使用简单拆分(不是你也可以使用正则表达式拆分)

$value = 'something:009' 
$values=$value -split ':'

[pscustomobject]@{
Val1=$values[0]
Val2=$values[1]
}

解决方案 2:使用 ConvertFrom-String 和模板

$template=@"
{{Val1:Abc123}:{Val2:1}}
"@

$value = 'something:009' 
$value | ConvertFrom-String -TemplateContent $template