Чтобы объединить два массива категорически , необходимо использовать +
:
set-transportrule -identity "whatever" `
-from ((get-transportrule -identity "whatever").from + "whoever2")
Примечание. Поскольку оператор +
может использоваться только в выражении , весь аргумент -from
должен быть заключен в (...)
.
Напротив, <array>, <scalar>
создает массив 2-элементный , чей 1-й элемент <array>
, а 2-й элемент <scalar>
, что не является вашим намерением.
,
, который является оператором построения массива PowerShell, создает массив, каждый операнд становится элементом массива как есть , независимо от того, является ли данный операнд скалярным или массивом.
В отличие от этого, с помощью LHS со значением массива +
объединяет LHS и RHS, добавляя элемент (ы) RHS в качестве дополнительных элементов в LHS (что неявно создает новый массив , учитывая, что массивы имеют фиксированный размер).
Упрощенный пример:
$arr = 1, 2 # input array
$scalar = 3 # scalar to append
# INCORRECT: Creates *nested* array.
($arr, $scalar).Count # -> 2(!); [0] of the new array contains $arr, [1] $scalar
# Same as: (1, 2), 3
# CORRECT: Creates *flat* array.
($arr + $scalar).Count # -> 3
# Same as: (1, 2) + 3 == 1, 2, 3
Обратите внимание, что вы не можете отличить $arr, $scalar
от $arr + $scalar
по тому, как они выводят на экран , потому что неявное форматирование вывода неявно перечисляет массив, полученный как один входной объект.
Вы можете сделать разницу видимой, передав по трубопроводу Format-Table
с -Expand CoreOnly
, который подавляет неявное перечисление и вместо этого печатает свойства любого элемента массива:
# Flat array: prints as expected.
PS> $arr + $scalar | Format-Table -Expand CoreOnly
1
2
3
# Array with sub-arrays: output reveals the presence of subarrays
PS> $arr, $scalar | Format-Table -Expand CoreOnly
Length LongLength Rank SyncRoot IsReadOnly IsFixedSize IsSynchronized Count
------ ---------- ---- -------- ---------- ----------- -------------- -----
2 2 1 {1, 2} False True False 2
3
Для получения дополнительной информации см. Нижний раздел этого ответа .