Как выровнять пробелы в выводе кода PowerShell?

Как выровнять пробелы в выводе кода PowerShell?

Вот мой код PowerShell:

$Phones = @('iPhone 12', 'Samsung S5', 'Nokia 7')
$Manufs = @('US', 'South Korea', 'Finlandia')
$n = 0
$Phones | foreach {
    "$($_) : $($Manufs[$n])"
    $n++
}

Выход:

iPhone 12: US
Samsung S5: South Korea
Nokia 7: Finlandia

Как выровнять пробел/табуляцию перед, :чтобы получилось:

iPhone 12  : US
Samsung S5 : South Korea
Nokia 7    : Finlandia

решение1

Если выполучить длину самой длинной строкито вы можете использовать интерполяцию строк с форматированием (оператор формата-f), возможно, что-то вроде этого:

$Phones = @('iPhone 12', 'Samsung S5', 'Nokia 7', 'Samsung Galaxy S II Epic 4G Touch')
$Manufs = @('US', 'South Korea', 'Finlandia', 'South Korea')
$maxLen = ($Phones | Measure-Object -Maximum -Property Length).Maximum
$formatString = "{0, -$maxLen} : {1}"
$n = 0
$Phones | foreach {
    $formatString -f $_, $Manufs[$n]
    $n++
}

Получить:

iPhone 12                         : US
Samsung S5                        : South Korea
Nokia 7                           : Finlandia
Samsung Galaxy S II Epic 4G Touch : South Korea

Если вы хотите, чтобы первый элемент был выровнен по правому краю в своем «столбце», вы можете использовать:

$formatString = "{0, $maxLen} : {1}"

(обратите внимание, что в этом предложении нет «нет» -), чтобы получить:

                        iPhone 12 : US
                       Samsung S5 : South Korea
                          Nokia 7 : Finlandia
Samsung Galaxy S II Epic 4G Touch : South Korea

Связанный контент