PowerShell返回0表示字符串长度

时间:2018-06-05 09:38:39

标签: powershell string-length

我正在尝试获取PowerShell对象中最长值的长度。但是,这样做会导致$longenstPackageVersion保持其初始值0 -

$longenstPackageVersion = 0
$packages | Select-Object @{Name="PackageVersion"; Expression ={"$($_.properties.Id) $($_.properties.Version)"}} | ForEach-Object { if ($_.Length -gt $longenstPackageVersion) { $longenstPackageVersion = $_.Length } }
$longenstPackageVersion

所以我尝试输出每个值的长度,但没有输出 -

$packages | Select-Object @{Name="PackageVersion"; Expression ={"$($_.properties.Id) $($_.properties.Version)"}} | ForEach-Object { $_.Length }

最后,我尝试先将每个值转换为字符串,然后输出它的长度,但每个值都显示0 -

$packages | Select-Object @{Name="PackageVersion"; Expression ={"$($_.properties.Id) $($_.properties.Version)"}} | ForEach-Object { $_.ToString().Length }

为什么PowerShell无法像这样检查每个值的长度?至关重要的是,如何修改我的代码以使其按预期工作?

1 个答案:

答案 0 :(得分:0)

我发现我可以输出到数组,然后使用Measure-Object来获得我所需的最大长度。

$longenstPackageVersionLength = (($packages | ForEach-Object { "$($_.properties.Id) $($_.properties.Version)" }) | Measure-Object -Maximum -Property Length).Maximum