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


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

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

Массивы PowerShell 101

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

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

$prime = 13

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

$name = «Левин»

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

$week = «Понедельник», «Вторник», «Среда», «Четверг», «Пятница», «Суббота», «Воскресенье»

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

$week = @(“Понедельник”, “Вторник”, “Среда”, “Четверг”, “Пятница”, “Суббота”, “Воскресенье”)

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

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

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

$digits = (0..9)

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

$values ​​= @()

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

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

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

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

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

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

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

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

$var = $numbers[5]

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

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

“$days[2]”

У нас будет среда, а не вторник.

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

$numbers[1] = 0

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

$names += «Джонни»

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

$names += «Чарли, Лиам, Тереза»

$names += $surnames

Метод, разделенный запятыми, также применим для доступа к нескольким элементам массива. Например, если вы введете это значение, первые пять элементов $daysбудут сохранены в $weekdays..

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

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

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

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

Для ($i = 0 ; $i -lt $days.Length ; $i++)
{

    $days[$i]
}

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

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

Foreach ($day в $days)
{

    $day

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

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

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

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

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

.

Похожие сообщения:


1.06.2022