Функции в 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 довольно обширна, и занимает довольно много текста, поэтому, остальные моменты я опишу в других статьях.

Большой выбор бассейны сборные. Бассейны и оборудование. .

Комментарии закрыты.