Для создания и инициализации массива достаточно присвоить значения его элементам. Значения, добавляемые в массив, разделяются запятыми и отделяются от имени массива символом присваивания. Например, следующая команда создаст массив $a из трех элементов:
PS C:\> $a=1,5,7
PS C:\>$a
1
5
7
Можно создать и инициализировать массив, используя оператор диапазона (..). Например, команда
PS C:\> $b=10..15
создает и инициализирует массив $b, содержащий 6 значений 10, 11, 12, 13, 14 и 15.
Для создания массива может использоваться операция ввода значений его элементов из текстового файла:
PS C:\> $f = Get-Content c:\data\numb.txt –TotalCount 25
PS C:\>$f.length
25
В приведенном примере результат выполнения командлета Get-Content присваивается массиву $f. Необязательный параметр –TotalCount ограничивает количество прочитанных элементов величиной 25. Свойство объекта массив – length – имеет значение, равное количеству элементов массива, в примере оно равно 25 (предполагается, что в текстовом файле munb.txt по крайней мере 25 строк).
Обращение к элементам массива
Длина массива (количество элементов) хранится в свойcтве Length. Для обращения к определенному элементу массива нужно указать его индекс в квадратных скобках после имени переменной. Нумерация элементов массива всегда начинается с нуля. В качестве индекса можно указывать и отрицательные значения, отсчет будет вестись с конца массива – индекс -1 соответствует последнему элементу массива.
Операции с массивами
По умолчанию массивы PowerShell могут содержать элементы разных типов (целые 32-х разрядные числа, строки, вещественные и другие), то есть являются полиморфными. Можно создать массив с жестко заданным типом, содержащий элементы только одного типа, указав нужный тип в квадратных скобках перед именем переменной. Например, следующая команда создаст массив 32-х разрядных целых чисел:
PS C:\> [int[]]$a=1,2,3
Массивы PowerShell базируются на.NET-массивах, имеющих фиксированную длину, поэтому обращение за предел массива фиксируется как ошибка. Имеется способ увеличения первоначально определенной длины массива. Для этого можно воспользоваться оператором конкатенации + или +=. Например, следующая команда добавит к массиву $a два новых элемента со значениями 5 и 6:
PS C:\> $a
1
2
3
4
PS C:\>$a+=5,6
PS C:\>$a
1
2
3
4
5
6
При выполнении оператора += происходит следующее:
· создается новый массив, размер которого достаточен для помещения в него всех элементов;
· первоначальное содержимое массива копируется в новый массив;
· новые элементы копируются в конец нового массива.
Таким образом, на самом деле создается новый массив большего размера.
Можно объединить два массива, например $b и $c в один с помощью операции конкатенации +. Например:
PS C:\> $d=$b+$c
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.