我遇到了Convertfrom-String cmdlet的问题
$value = 'something:009'
$value | ConvertFrom-String -Delimiter ':'
输出:
P1 P2
-- --
something 9
我想要的输出是
P1 P2
-- --
something 009
有人有任何想法吗?
提前致谢。
答案 0 :(得分:2)
我建议完全避免使用ConvertFrom-String
- 它会执行您在使用-Delimiter
时无法控制的类型转换,正如您所经历的那样,并且它的示例驱动的基于模板的解析很尴尬。
注意:ConvertFrom-String
在跨平台PowerShell Core edition中不可用。
在您的简单情况下,请改用ConvertFrom-Csv
:
$value = 'something:009'
$value | ConvertFrom-Csv -Delimiter ':' -Header P1, P2
ConvertFrom-Csv
将所有值读取为字符串,as-is(使用字符串输入;删除字段值周围的双引号)。
答案 1 :(得分:0)
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