Массивы PowerShell: как их создавать и использовать

Переменные — это самая основная структура данных в любом типе кодирования(any type of coding) . Но одной переменной вряд ли достаточно для большинства целей, особенно при работе с более сложными алгоритмами.

Вот тут-то и появляются массивы. Будь то C++ или Python , массивы в той или иной форме присутствуют в каждом языке программирования. Но как насчет Windows PowerShell ? Как работают массивы PowerShell ? Как вы их используете? Каков их синтаксис? Давай выясним.

Массивы PowerShell 101

Проще(Simply) говоря, массив — это просто структурированный набор переменных. Идея состоит в том, чтобы избавиться от хлопот, связанных с отслеживанием десятков имен, путем объединения связанных переменных в пронумерованный набор.

В PowerShell вы можете создать переменную, добавив символ $ перед именем переменной. Например:

$prime = 13

Переменная может содержать данные любого типа, от чисел до строк. Вам просто нужно использовать двойные или одинарные кавычки, чтобы указать строку.

$name = “Levin”

Теперь, чтобы создать новый массив, просто присвойте одной и той же переменной несколько значений, разделенных запятыми. Как это:

$week = “Monday”, “Tuesday”, “Wednesday”, “Thursday”, “Friday”, “Saturday”, “Sunday”

Некоторые люди предпочитают явно приводить переменную к массиву, чтобы избежать путаницы, хотя в этом нет необходимости. Для этого поместите значения в круглые скобки, начав с символа @.

$week = @(“Monday”, “Tuesday”, “Wednesday”, “Thursday”, “Friday”, “Saturday”, “Sunday”)

Обычно это удобно, когда вы пытаетесь поместить вывод других команд в массив, где вы не можете вручную записать их в правильном формате.

Создание массива

Мы уже видели наиболее распространенный метод создания массива. Но в зависимости от ситуации есть и другие способы, которые могут оказаться более подходящими. Например, если вы хотите создать массив, содержащий диапазон чисел, вы можете использовать оператор диапазона:

$digits = (0..9)

Это создаст массив из всех десяти цифр от нуля до девяти. Вы также можете инициализировать пустой массив, если вам просто нужно место для хранения значений позже.

$values = @()

Несколько(Multiple) массивов можно даже вкладывать друг в друга, хотя такой способ использования может очень быстро привести к путанице.

$coordinates = @(
    (5, 10, 23),
    (11, 7, 16)
)

По умолчанию в массиве может храниться переменная любого типа, будь то числа, строки или сочетание того и другого. Но вы можете явно определить тип, если хотите ограничить значения, помещаемые в него. Например:

[int[]] $numbers = 2,3,4,5

Таким образом, массив может содержать только целые числа. Попытка присвоить ему любой другой тип значения вернет ошибку. Это может быть полезно для предотвращения простых ошибок для массивов, работающих исключительно с числовыми значениями, поскольку ввод строки в переменную, которая будет использоваться в вычислениях, создаст проблемы.

Доступ к массивам

До сих пор мы видели несколько методов для создания массивов, содержащих различные типы данных. Но как вы собираетесь получить доступ к этим данным?

Массивы PowerShell(PowerShell) используют тот же формат, что и другие языки программирования. К каждой переменной массива можно получить доступ по ее порядковому номеру. Например:

$var = $numbers[5]

Это скопирует значение, хранящееся в пятом индексе массива $numbers , в переменную $varОбратите внимание, что индексы массива начинают отсчет с 0, поэтому доступ к первому элементу осуществляется с нуля.

Если бы мы должны были вывести это, например:

“$days[2]”

Мы получим среду, а не вторник.

Вы можете использовать этот же метод для изменения этих значений. Например, следующая команда изменит второй элемент массива на ноль:

$numbers[1] = 0

Вы также можете добавить дополнительные элементы в существующий массив вместо изменения значений текущих записей, просто добавив их, как арифметическое выражение.

$names += “Johny”

Этот метод можно использовать для одновременного добавления нескольких записей или даже целых массивов.

$names += “Charlie, Liam, Teresa”

$names += $surnames

Метод с разделителями-запятыми также подходит для доступа к нескольким элементам массива. При вводе этого, например, первые пять элементов $days сохраняются в $weekdays .

$weekdays = $days[0,1,2,3,4]

Итерация по массивам

Ручной доступ к определенным элементам массива — это хорошо, но если вы хотите выполнять действия со всем содержимым массива, это может стать утомительным. Более элегантный подход — использовать цикл For.

Циклы for могут систематически проходить по всем элементам массива, обрабатывая каждое значение в соответствии с инструкциями. Вот как вы можете построить такой цикл:

For ($i = 0 ; $i -lt $days.Length ; $i++){
    $days[$i]}

Функция array.Length возвращает размер массива, который в основном представляет собой количество элементов в нем. Его можно подключить к параметру тестового выражения цикла For, чтобы полностью перебрать все элементы.

Цикл Foreach и цикл Foreach -object могут делать то же самое с еще более компактным сценарием PowerShell .

Foreach ($day in $days){
    $day}

Это избавляет вас от необходимости определять размер массива, оставляя детали для обработки PowerShell .

Когда следует использовать массивы PowerShell(PowerShell Arrays)

Самый большой источник ошибок в сложном скрипте — неправильные ссылки на переменные. Происходит это из-за наличия большого количества переменных с уникальными именами, что затрудняет запоминание их назначения.

Самое простое решение этой проблемы — активно использовать массивы. Все переменные, связанные каким-либо образом, могут быть назначены одному массиву и доступны через их порядковые номера.

Основным вариантом использования Microsoft PowerShell(Microsoft PowerShell’s) является автоматизация, и массивы играют в этом ключевую роль. Объекты, возвращаемые командлетами PowerShell , могут храниться в массивах и повторяться. Это позволяет автоматически выполнять последовательные задачи, что значительно упрощает администрирование системы.



About the author

Я профессиональный аудиотехник и клавишник с опытом работы более 10 лет. Я работал в корпоративном мире в качестве консультанта и менеджера по продуктам, а в последнее время — инженером-программистом. Мои навыки и опыт позволяют мне работать над различными типами проектов от малого бизнеса до крупных компаний. Я также являюсь экспертом по Windows 11 и работаю над новой операционной системой уже более двух лет.



Related posts