PowerShell возвращает 0 для длины строки
Я пытаюсь получить длину самого длинного значения в объекте 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 ответ
Я обнаружил, что могу вывести в массив, а затем использовать Measure-Object
чтобы получить максимальную длину, которая мне нужна.
$longenstPackageVersionLength = (($packages | ForEach-Object { "$($_.properties.Id) $($_.properties.Version)" }) | Measure-Object -Maximum -Property Length).Maximum