Функции в PowerShell
PowerShell функции являются блоком кода, который находится в памяти до завершения текущего сеанса работы. С помощью ключевого слова Function мы говорим системе, что объявляем новую функцию, после ключевого слова идет название функции PowerShell, далее в фигурных скобках следует список выражений, например:
PS C:\ > Function Hello{"Привет Мир!"} PS C:\ > Hello Привет Мир!
Функции можно передавать аргументы, которые обрабатываются с помощью переменной $Args или с помощью формальных параметров.
Сама переменная $Args является массивом, в котором хранятся все параметры, указанные при запуске функции, например:
PS C:\ > Function Hello{"Привет, $Args!"} PS C:\ > Hello мой новый мир Hello мой новый мир
Тут мы передали функции оболочки PowerShell три параметра, мой, новый и мир. Стоит помнить, что только в двойных кавычках переменная будет изменятся на ее значение, то есть:
PS C:\ > Function Hello{"Привет, $Args!"} PS C:\ > Hello мой новый мир Привет, $Args!
Как видим, во втором примере параметры не были обработаны.
Также, существует специальная переменная $OFS, которая позволяет вставить символ разделитель между элементами массива, который хранится в переменной $Args:
PS C:\> Function Hello{ >> $OFS="," >> "Привет, $Args!"} >> PS C:\> Hello мой новый мир Привет, мой, новый, мир!
Так как переменная $Args хранит в себе массив (нумерация элементов начинается с нуля), то мы вправе обратится к отдельным ее аргументам по порядковому номеру. С помощью метода Count можно определить общее количество элементов, переданных в функцию PowerShell. Например:
PS C:\> Function AllSum{"Количество аргументов: $($Args.Count)" >> $n=0 >> For($i=0; $i -lt $Args.Count; $i++) { $n+=$Args[$i] } >> "Сумма аргументов: $n"} >> PS C:\> AllSum 10 20 30 40 2 6 Количество аргументов: 6 Сумма аргументов: 108
Вторым способом для обработки переданных аргументов функции являются формальные параметры. Создадим функцию Delta, которая будет решать уравнение y=x1+3*x2- (X3-X4):
PS C:\> Function Delta ($x1, $x2, $x3, $x4) { "y равно: $($x1+3*$x2- ($X3-$X4)) "}
Теперь передадим PowerShell созданной Delta функции четыре числовых параметра:
PS C:\> Delta 3 5 1 12 y равно: 29
Стоит обратить внимание на $($x1+3*$x2- ($X3-$X4)) – тут я взял все выражение в скобки и прописал перед ними знак доллара, если этого не сделать, то на выходе получим не конечный результат, а лишь математический пример:
PS C:\> Function Delta ($x1, $x2, $x3, $x4) { "y равно: $x1+3*$x2- ($X3-$X4) "} PS C:\> Delta 3 5 1 12 y равно: 3+3*5- (1-12)
Теперь попробуем передать не числовые параметры, а символьные:
PS C:\> Function Delta ($x1, $x2, $x3, $x4) { "y равно: $($x1+$x2+$X3+$X4) "} PS C:\> delta "3" "5" "1" "12" y равно: 35112
Как видим, теперь произошла конкатенация – преобразование нескольких строк (символов) в одну. Мы также вправе, в PowerShell задавать начальные значения для аргументов функции, например:
PS C:\> Function Delta ($x1=10, $x2=12, $x3=23, $x4=33) { "y равно: $($x1+$x2+$X3+$X4) "} PS C:\> delta y равно: 78
Тут, функция PowerShell, не принимала никаких параметров, вычисление произошло по значениям, заданным по умолчанию. Сама тема по работе с функциями PowerShell довольно обширна, и занимает довольно много текста, поэтому, остальные моменты я опишу в других статьях.
Советую почитать:
Опубликовано в рубрике PowerShell