Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
МетУк - ОС - 10 - Использование PowerShell.doc
Скачиваний:
2
Добавлен:
01.05.2025
Размер:
190.46 Кб
Скачать

Краткий справочник по powershell

Приведем краткие примеры по выполнению наиболее важных и используемых возможностей языка PowerShell. Для подробного изучения возможностей языка и встроенных функций можно обратиться к электронному ресурсу «Изучение PowerShell» [2, 3].

Ввод/вывод информации на консоль

Наиболее простым способом вывода произвольной информации в командную консоль является командлет «Out-Host» (является командлетом, в который по умолчанию передаются результаты выполнения команд, поэтому его явное указание в конвейере не обязательно) или «Write-Host». Они получают на вход параметр и выводят его текстовое представление на консоль:

Write-Host "Hello PowerShell"

Для ввода информации с консоли используется команда «Read-Host», возвращающая введенную строку в виде результата:

$var1 = Read-Host "Введите ваше имя"

Переменные и массивы

В скриптах PowerShell все переменные должны начинаться с символа «$» (доллар). Объявлять переменные не нужно, любое присвоение переменной, имя которой ранее не встречалось, приводит к созданию новой переменной в программе. В именах переменных нельзя использовать символы «!», «@», «#», «%», «&», «.» и символ пробела. Имена переменных (а также любых других идентификаторов) регистронезависимы.

Перед переменной в квадратных скобках может быть указан ее тип. Например,

[double]$val = 5

Перечень основных типов приведен ниже в таблице 3.

Таблица 3. Основные базовые типы PowerShell

Имя типа

Описание

[array]

Массив значений. Массив в PowerShell может содержать элементы различных типов.

[bool]

Логическая величина принимающая значения True/False.

[byte]

8-ми битное беззнаковое значение (0..255).

[char]

Один символ в кодировке Unicode. Данный тип данных занимает в памяти два байта.

[decimal]

Знаковое 128-и битное число.

[double]

Дробное (с плавающей точкой) число удвоенной точности (64 бита).

[hashtable]

Хэш-таблица.

[int]

Целое знаковое четырехбайтовое число.

[long]

Целое знаковое восьмибайтовое число.

[single]

Дробное (с плавающей точкой) число одинарной точности (32 бита).

[string]

Неизменяемая текстовая строка в кодировке Unicode.

Для того чтобы создать массив значений, необходимо записать их через запятую внутри конструкции @(…). Например,

$vals1 = @(3, 5.1, 7, 15)

$vals2 = @(-6, 12, 9, 10)

Write-Host ($vals1 + $vals2)

Оператор «+» в данном примере производит объединение массивов, создавая новый массив, состоящий из последовательно расположенных элементов двух массивов.

Массивы допускают обращение к своим элементам по их индексу (индекс первого элемент – ноль) и поддерживают свойство «Count» – количество элементов в массиве:

for($i=0; $i -lt $vals1.Count; $i++)

{

Write-Host $vals1[$i]

}

Доступ к аргументам командной строки

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

#Вывод всех параметров командной строки

foreach($i in $args) { write-host $i }

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

Условные операторы

В языке PowerShell используется ряд операторов сравнения, описанных в таблице 4. В случае сравнения текстовых данных данные операторы производят сравнение без учета регистра, однако это поведение может быть изменено добавлением символа «c» (символ в английской раскладке) непосредственно после дефиса.

Таблица 4. Операторы сравнения

Оператор

Описание

-lt

Меньше чем (первый аргумент меньше второго)

-le

Меньше чем или равно

-gt

Больше чем

-ge

Больше чем или равно

-eq

Аргументы оператора равны

-ne

Аргументы не равны

-like

Первый операнд соответствует шаблону, описанному вторым оператором

-notlike

Первый операнд не соответствует шаблону, описанному вторым оператором

-and

Логический оператор «И», соединяющий несколько условий

-or

Логический оператор «ИЛИ»

Условный оператор «if» используется для создания ветвлений кода скрипта, как в следующем примере:

$color = read-host "Введите цвет"

if( $color -eq 0) { write-host "black" }

elseif( $color -eq 1) { write-host "blue" }

elseif( $color -eq 2) { write-host "red" }

else { write-host "unknown" }

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

Вместо написания множества условных операторов, как в предыдущем примере, в случае сравнения на равенство можно применять оператор «switch»:

$color = read-host "Введите цвет"

switch( $color )

{

0 { "black" }

1 { "blue" }

2 { "red" }

default { "unknown" }

}

Операторы циклов

В языке PowerShell присутствует пять типов циклов: for, foreach, while, do-while и do-until. Все эти циклы имеют те же самые алгоритмы функционирования, что и в большинстве современных языков программирования. Для краткого ознакомления рассмотрим, как будет выглядеть задача вывод чисел от 0 (нуля) до некоторого вводимого пользователем значения с применением каждого из циклов:

$max = read-host "Введите макс. число"

#Цикл for

write-host "Цикл FOR"

for($i=0; $i -lt $max; $i++) { write-host $i }

#Цикл for

write-host "Цикл FOREACH"

foreach($i in (0..($max-1))) { write-host $i }

#Цикл while

write-host "Цикл DO-WHILE"

$i = 0

while( $i -lt $max )

{

write-host $i

$i = $i + 1

}

#Цикл do-while

write-host "Цикл DO-WHILE"

$i = 0

do { write-host $i; $i++ }

while( $i -lt $max )

#Цикл do-until

write-host "Цикл DO-UNTIL"

$i = 0

do { write-host $i; $i++ }

until( $i -ge $max )

Пользовательские функции

Описание пользовательских функций в PowerShell имеет следующий синтаксис:

function <имя-функ.>[(<пар-ры>)] { <операторы> }

Результатом работы функции является результат последнего выражения, вычисленного в ней. Например, рассмотрим программу, складывающую два вводимых с клавиатуры числа.

function Add([int]$x, [int]$y) { $x + $y }

$a = Read-Host "Введите A"

$b = Read-Host "Введите B"

Write-Host "Сумма A+B=" (Add $a $b)

Явное указание типа данных параметров функции в ее заголовке заставляет интерпретатор PowerShell автоматически преобразовывать введенные строки к числовой форме. Стоит так же обратиться внимание на синтаксис вызова функции, когда ее параметры передаются не в скобках, а записываются следом за ней через пробел(ы).