Я новичок в Powershell и все еще открываю для себя -
[string[][]] $adusers = (
( "John", "Smith", "jsmith", "jsmith@smitty.com" ),
( "James", "Johnson", "jjohnson", "jjohnson@smitty.com" )
)
Второе измерение может быть возвращено как массив 1 измерения.
$adusers.GetType();
$adusers[0].GetType();
$adusers[1][2].GetType();
IsPublic IsSerial Name BaseType
-------- -------- ---- --------
True True String[][] System.Array
True True String[] System.Array
True True String System.Object
Для каждого с 2-мерным массивом объединяет элементы массива 2-го измерения с разделителем пробелов и возвращает строковый объект.
Есть ли какой-то синтаксис, который мне не хватает для CAST переменной $ user в измерении? Должен ли я?
Почему PowerShell объединяет их все вместе как строку?
$ForEach($user in $adusers){
$adusers.GetType();
$user.GetType();
$user[0]
$user[1]
$user[2]
$user[3]
}
Выход
IsPublic IsSerial Name BaseType
-------- -------- ---- --------
True True String[][] System.Array
True True String System.Object
J
o
h
n
True True String[][] System.Array
True True String System.Object
J
a
m
e
********* ******************* ОБНОВИТЬ ******************************
Проблема заканчивается тем, что я инициализировал переменную $ user ранее в другом фрагменте кода в том же сценарии (используя выбор прогона).
[String]$user = "testUser"
ForEach выполнял приведение 1-мерный массив в строку - при условии, что это то, что я хотел.
Я попытался объявить $ user как 1-мерный массив, но неверно:
[string]$user = ""
[string[]]$user
$user.GetType();
IsPublic IsSerial Name BaseType
-------- -------- ---- --------
True True String System.Object
Что мне нужно было сделать объявляет $ user массивом 1 измерения и инициализирует его массивом 1 измерения:
[string]$user = ""
[string[]]$user = ("")
$user.GetType();
IsPublic IsSerial Name BaseType
-------- -------- ---- --------
True True String[] System.Array
или запускает новый сеанс Powershell, где $ user не был ранее объявлен и создан. Это также сработало.
Как я уже говорил, я новичок в Powershell и все еще учусь.
Я также провел некоторое время в этом Вопросе и ответах, чтобы получить некоторое представление о том, как очистить переменные в shell - интересно.
powershell - Удалить все переменные