Для создания и инициализации массива достаточно присвоить значения его элементам. Значения, добавляемые в массив, разделяются запятыми и отделяются от имени массива символом присваивания. Например, следующая команда создаст массив $a из трех элементов:
$a = 1,5,7.
Можно создать и инициализировать массив, используя оператор диапазона (..). Например, команда
$b = 10..15
создает и инициализирует массив $b, содержащий 6 значений 10, 11, 12, 13, 14 и 15.
Для создания массива может использоваться операция ввода значений его элементов из текстового файла:
$f = Get-Content C:\DATA\numb.txt -TotalCount 25
$f.Length
25.
В приведенном примере результат выполнения командлета Get-Content присваивается массиву $f. Необязательный параметр -TotalCount ограничивает количество прочитанных элементов величиной 25. Свойство объекта массив Length имеет значение, равное количеству элементов массива, в примере оно равно 25 (предполагается, что в текстовом файле munb.txt по крайней мере 25 строк).
Обращение к элементам массива
Длина массива (количество элементов) хранится в свойcтве Length. Для обращения к определенному элементу массива нужно указать его индекс в квадратных скобках после имени переменной. Нумерация элементов массива всегда начинается с нуля. В качестве индекса можно указывать и отрицательные значения, отсчет будет вестись с конца массива, индекс -1 соответствует последнему элементу массива.
Операции с массивами
По умолчанию массивы PowerShell могут содержать элементы разных типов (целые 32-х разрядные числа, строки, вещественные и другие), то есть являются полиморфными. Можно создать массив с жестко заданным типом, содержащий элементы только одного типа, указав нужный тип в квадратных скобках перед именем переменной. Например, следующая команда создаст массив 32-х разрядных целых чисел:
[int[]]$a = 1,2,3.
Массивы PowerShell базируются на.NET-массивах, имеющих фиксированную длину, поэтому обращение за пределы массива фиксируется как ошибка. Имеется способ увеличения первоначально определенной длины массива. Для этого можно воспользоваться оператором конкатенации + или +=. Например, следующая команда добавит к массиву $a два новых элемента со значениями 4 и 5:
$a += 4,5.
При выполнении оператора += происходит следующее:
– создается новый массив, размер которого достаточен для помещения в него всех элементов;
– первоначальное содержимое массива копируется в новый массив;
– новые элементы копируются в конец нового массива.
Таким образом, на самом деле создается новый массив большего размера.
Можно объединить два массива, например $b и $c в один с помощью операции конкатенации +. Например:
$d = $b + $c.
2.1.10. Регулярные выражения – назначение и использование
Регулярные выражения (или сокращенно «регэкспы» (regexp, regular expressions)) обладают огромной мощью, и способны сильно упростить жизнь системного администратора или программиста. В PowerShell регулярные выражения легко доступны, удобны в использовании и максимально функциональны. PowerShell использует реализацию регулярных выражений.NET.
Регулярные выражения – это специальный мини-язык, служащий для разбора (parsing) текстовых данных. С его помощью можно разделять строки на компоненты, выбирать нужные части строк для дальнейшей обработки, производить замены и т. д.
Знакомство с регулярными выражениями начнем с более простой технологии, служащей подобным целям – с подстановочных символов. Наверняка вы не раз выполняли команду DIR, указывая ей в качестве аргумента маску файла, например *.exe. В данном случае звёздочка означает «любое количество любых символов». Аналогично можно использовать и знак вопроса, он будет означать «один любой символ», то есть DIR??.exe выведет все файлы с расширением.exe и именем из двух символов. В PowerShell можно применять и еще одну конструкцию – группы символов. Так, например, [a-f] будет означать «один любой символ от a до f, то есть символ из списка (a,b,c,d,e,f)», а [smw] любую из трех букв из списка (s, m или w). Таким образом, команда Get-Childitem [smw]??.exe выведет файлы с расширением.exe, у которых имя состоит из трех букв, и первая буква либо s, либо m, либо w.