PowerShell. О массивах (about_Arrays)

Массив представляет собой структуру данных, которая предназначена для хранения набора элементов. Элементы могут быть одного и того же типа или различных типов.
Начиная с Windows PowerShell 3.0, нулевой элемент или одиночный объект имеют некоторые свойства массивов.

Создание и инициализация массива

Чтобы создать и инициализировать массив, нужно присвоить несколько значений переменной.
Значения, хранящиеся в массиве, разделяются запятой(,) и отделены от имени переменной оператором присваивания (=).
Например, чтобы создать массив с именем $A, который содержит семь числовых (INT) значения 22, 5, 10, 8, 12, 9, и 80, надо ввести:

 

Также можно создать и инициализировать массив, используя оператор диапазона (..). Например, чтобы создать и инициализировать массив с именем $B, который содержит значения с 5 по 8, необходимо ввести следующую конструкцию:

 

В результате $B будет содержать четыре значения: 5, 6, 7 и 8.

Если тип данных не задан, Windows PowerShell создает массив как массив объектов (тип: System.Object []). Чтобы узнать тип данных массива, используйте метод GetType(). Например, чтобы узнать тип данных массива $a, выполните:

 

Чтобы создать типизированный массив, то есть массив, который может содержать только значения определенного типа, надо задайть тип массива, например, String[], long[] или int32[]. Чтобы задать тип массива, перед именем переменной массива в квадратных скобках укажите тип. Например, чтобы создать массив содержащий 32-битные целые числа с именем $IA, содержащий четыре числа (1500, 2230, 3350, и 4000), выполните:

 

В результате массив $IA будет содержать только целые числа.

Можно создавать массивы, которые поддерживают любой из типов платформы Microsoft .NET Framework. Например, объекты которые отдаёт Get-Process представляют собой процессы типа System.Diagnostics.Process. Чтобы создать типизированный массив объектов процессов, введите следующую команду:

 

Оператор переопределения в массив (@)

Оператор переопределения(@) создает массив, даже если он не содержит элементов или содержит только один объект.

Синтаксис оператора массива выглядит следующим образом:
@(…)

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

 

Оператор массива особенно полезен в сценариях, когда вы получаете объекты, но не знаете, сколько объектов вы получите.

 

Для получения более подробной информации об операторе переопределения в массив, см about_Operators.

 

Чтение массива

Обратиться к массиву можно используя имя переменной массива. Чтобы отобразить все элементы в массиве, надо ввести имя массива. Например:

 

К элементам массива можно обратиться с помощью индекса, начиная с 0. Заключая число в скобках. Например, чтобы отобразить первый элемент массива $a, надо ввести:

 

Для отображения третьего элемента массива $a, надо ввести:

 

Отрицательные числа, в индексе массива, обзначают осчёт от конца массива. Например, «-1» обозначает последний элемент массива. Для отображения последних трех элементов массива, типа:

 

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

 

Эта команда не отображает все элементы массива кроме последнего. Она отображает первый, последний, и предпоследний элемент в массиве. Т.е эквивалентна:
$а[0,- 2,-1]

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

 

Можно использовать оператор плюс (+), чтобы объединить диапазоны элементов в задании индексов массива. Например, чтобы отобразить элементы с индексами 0, 2 и с 4 по 6, надо ввести:

 

Чтобы определить, сколько содержится элементов в массиве, используйте свойство Length или его псевдоним Count.

Чтобы обратиться к элементам массива, можно так же использовать циклические операторы, например ForEach. Для того, чтобы пройтись по всему массиву $a и отобразить все его элементы, введите следующую конструкцию:

Оператор цикла Foreach проходит по всем элементам массива $a и возвращает каждое значение элемента массива в переменную $element, пока не достигнит конца массива.

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

 

While можно использовать для прохода по массиву пока не нарушаются указанные условия. Например, чтобы отобразитьпервые 4 элемента в массиве $a, необходимо написать:

 

Просмотр свойств массива

Чтобы посмотреть свойства и методы массива, например для получения длины массива(Length) или метод для установки значения элемента в массиве (SetValue), используйте параметр InputObject командлета Get-Member.

При передаче массива по конвееру в командлет Get-Member, Windows PowerShell отправляет объекты по одному и Get-Member возвращает тип каждого элемента в массиве. Например:

 

При использовании параметра InputObject, Get-Member возвращает свойства массива.
Например, следующая команда получает свойства массива $a:

 

Вы также можете получить свойства массива, набрав запятую (,) перед его обозначением и передав по конвееру в командлет Get-Member. Запятая конвертирует массив, как значение содержащееся в другом массиве с одним элементом. Так Windows PowerShell передаёт по контейнеру массивы по одному за раз и этот элемент является массивом, то Get-Member возвращает свойства массива.

 

Работа с массивами

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

Чтобы изменить значение конкретного элемента массива, нужно указать имя массива и индекс элемента, который надо изменить, а затем использовать оператор присваивания (=), чтобы указать новое значение для элемента. Например, чтобы изменить значение второго элемента (индекс элемента 1) в массиве $a на значение 10 , необходимо написать:

 

Можно так же изменить значение используя метод массива — SetValue. В следующем примере изменяется значение второго элемента (индекс 1) массива $a на 500:

 

Можно использовать оператор +=, чтобы добавить элемент в массив. Когда вы используете его, Windows PowerShell на самом деле создает новый массив со значениями исходного массива и добавленными элементами. Например, чтобы добавить элемент со значением 200 в массив $a, надо ввести:

 

Удалить элементы из массива не просто, но вы можете создать новый массив, который содержит только выбранные элементы существующего массива. Например, чтобы создать массив $t со всеми элементами в массиве $a за исключение элемента с индексом 2, надо выполнить следующий скрипт:

 

Чтобы объединить два массива в один массив, используйте оператор плюс (+). В следующем примере создается два массива, и объединяеются в третий, а затем отображает полученный объединенный массив.

 

В результате массив $z содержит элементы со значениями: 1, 3, 5 и 9.

Чтобы удалить массив, надо присвоить значение $null к массиву. Следующая команда удаляет массив в переменной $a.

 

Можно так же использовать командлет Remove-Item, но назначать значение $null быстрее, особенно для больших массивов.

 

Массивы нулевой длинны и из одного элемента

Начиная с Windows PowerShell 3.0, коллекции из нуля объектов или из одного объекта имеют свойства Count и Length. Кроме того, вы можете получить индекс из массива одного объекта. Эти функции помогут избежать ошибок сценариев, когда команда которая ожидает массив, получает менее двух элементов.

Следующие примеры демонстрируют эти функцию.

Нет объектов:

 

Один объект:

 

Комментарии:

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *