我正在尝试获取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无法像这样检查每个值的长度?至关重要的是,如何修改我的代码以使其按预期工作?
答案 0 :(得分:0)
我发现我可以输出到数组,然后使用Measure-Object
来获得我所需的最大长度。
$longenstPackageVersionLength = (($packages | ForEach-Object { "$($_.properties.Id) $($_.properties.Version)" }) | Measure-Object -Maximum -Property Length).Maximum