#powershell #pipe
#powershell #канал
Вопрос:
Возьмите это в качестве примера:
$var = "one","two","three"
0..2 | select-object $var[$_]
Index operation failed; the array index evaluated to null.
At line:1 char:27
0..2 | select-object $var[ <<<< $_]
CategoryInfo : InvalidOperation: (:) [], RuntimeException
FullyQualifiedErrorId : NullArrayIndex
Почему значение $_ равно нулю?
Ответ №1:
Я не могу понять, почему вы используете select-object
попробуйте это:
$var = "one","two","three"
0..2 | % { $var[$_]}
Ответ №2:
Вы также можете использовать select-object другим способом:
$var | select -Index (0..2)
И кстати, если все, что вы хотите сделать, это извлечь элемент из массива, вы можете выполнить нарезку массива:
$var[0..2]
Ответ №3:
Если вы хотите использовать select-object, вам нужно создать хэш-таблицу, известную как вычисляемое свойство, и присвоить ей имя и ключи выражения. Результатом будут объекты с одним свойством, var, в следующем примере
0..2 | select @{name='var';expression={$var[$_]}}
var
---
one
two
three
Комментарии:
1. Это неправильный способ, который в данном случае может использоваться select. Смотрите мой ответ 🙂
2. это было дополнительное замечание, 1 за использование параметра index.
3. Вот почему can был выделен курсивом 🙂