Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

OS_LR5 (powershell арфиметические операции)

.docx
Скачиваний:
8
Добавлен:
07.06.2021
Размер:
85.48 Кб
Скачать

Министерство науки и высшего образования Российской Федерации

Калужский филиал федерального государственного бюджетного образовательного учреждения высшего образования

«Московский государственный технический университет имени Н.Э. Баумана (национальный исследовательский университет)»

(КФ МГТУ им. Н.Э. Баумана)

ФАКУЛЬТЕТ _ИУК «Информатика и управление»

КАФЕДРА ИУК6 «Защита информации»

ЛАБОРАТОРНАЯ РАБОТА № 5

«Разработка сценариев на Windows Powershell»

ДИСЦИПЛИНА: «Операционные системы»

Выполнил: студент гр. ИУК6-__

_________________ (_______________)

(Подпись) (Ф.И.О.)

Проверил:

_________________ (____________)

(Подпись) (Ф.И.О.)

Дата сдачи (защиты):

Результаты сдачи (защиты):

- Балльная оценка:

- Оценка:

Калуга, 2021

Цель работы: сформировать практические навыки написания PowerShell-сценариев.

Задачи: изучить понятие PowerShell-сценария, его назначение. Разработать PowerShell-сценарий в соответствии с вариантом. Провести моделирование ситуации применения разработанного PowerShell-сценария. 

Теоретические сведения

Новая оболочка Windows PowerShell (предварительно она была названа Monad) была задумана разработчиками Microsoft как более мощная среда для написания сценариев и работы из командной строки. Разработчики PowerShell преследовали несколько целей. Главная и самая амбициозная из них – создать среду составления сценариев, которая наилучшим образом подходила бы для современных версий операционной системы Windows и была бы более функциональной, расширяемой и простой в использовании, чем какой-либо аналогичный продукт для любой другой операционной системы. В первую очередь эта среда должна была подходить для решения задач, стоящих перед системными администраторами (тем самым Windows получила бы дополнительное преимущество в борьбе за сектор корпоративных платформ), а также удовлетворять требованиям разработчиков программного обеспечения, предоставляя им средства для быстрой реализации интерфейсов управления к создаваемым приложениям.

Выполнение работы

Задание 1: Написать скрипт на языке оболчки, указанном преподавателем. Скрипт должен принимать как минимум 2 позиционных параметра:

• оператор, определяет, какая операция будет применяться к массиву операндов:

o add – складывает все операнды (1+2+3+4+5) между собой и пишет сумму в result.txt в текущей папке;

o sub – вычитает поочередно все операнды из первого (1-2-3-4-5) и пишет результат в result.txt;

o multi – умножает друг на друга все операнды (1*2*3*4*5) и пишет произведение в result.txt;

o div – делит первый операнд поочередно на все остальные ((((1/2)/3)/4)/5) и пишет результат в result.txt;

o fact – вычисляет факториал всех переданных операндов и пишет результаты (по значению на строку) в result.txt;

o pow – возводит каждый операнд в степень, переданную третьим позиционным параметром и пишет результаты (по значению на строку) в result.txt;

• массив операндов – строка вида ‘1 2 3 4 5’, где 1, 2, 3, 4 и 5 – операнды;

• степень для режима pow.

Краткое описание работы программы: функции test и test2 с блоком param необходимы для ввода параметров в остальные функции в нужном виде.

Функция add принимает на вход массив чисел и, поочередно перебирая все, добавляет их в пустую переменную sum, а затем возвращает полученную сумму.

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

Функция multi принимает на вход массив чисел, помещает нулевой элемент в промежуточную переменную umn, после повторно присваивает ей значение, умножая на каждый элемент после нулевого, а затем возвращает результат умножения.

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

Функция fact находит факториал числа и используется в функции fact2 для поиска факториалов всех элементов массива.

Функция pow принимает на вход массив чисел и степень функции. Степень определяет счетчик того, сколько раз число будет умножено само на себя.

Строки $параметр | Out-File -FilePath E:\1_forPS\result.txt -Encoding ascii –Append необходимы для вывода результатов в файл. –Encoding ascii обеспечивает нужную форму кодировки, -Append позволяет дописывать результат в файл, не стирая все написанное ранее.

Листинг программы:

function test {

param(

[array]$a

)

}

function test2 {

param(

[int]$s

)

}

function add ($b) {

foreach ($element in $b) {

$sum += $element

}

"Summa:" | Out-File -FilePath E:\1_forPS\result.txt -Encoding ascii -Append

$sum | Out-File -FilePath E:\1_forPS\result.txt -Encoding ascii -Append

return $sum

}

function sub ($b) {

$razn = $b[0]

for ($index = 1; $index -lt $b.count; $index++)

{

$razn -= $b[$index]

}

"Raznost:" | Out-File -FilePath E:\1_forPS\result.txt -Encoding ascii -Append

$razn | Out-File -FilePath E:\1_forPS\result.txt -Encoding ascii -Append

return $razn

}

function multi ($b) {

$umn = $b[0]

for ($index = 1; $index -lt $b.count; $index++)

{

$umn = $umn*$b[$index]

}

"Umnojit:" | Out-File -FilePath E:\1_forPS\result.txt -Encoding ascii -Append

$umn | Out-File -FilePath E:\1_forPS\result.txt -Encoding ascii -Append

return $umn

}

function dev ($b) {

$dev = $b[0]

for ($index = 1; $index -lt $b.count; $index++)

{

$dev = $dev/$b[$index]

}

"Del:" | Out-File -FilePath E:\1_forPS\result.txt -Encoding ascii -Append

$dev | Out-File -FilePath E:\1_forPS\result.txt -Encoding ascii -Append

return $dev

}

function fact([System.Management.Automation.PSObject]$b)

{

if($b -lt 0)

{

$result = 0

}

elseif($b -le 1)

{

$result = 1

}

else

{

$result = $b * (fact($b - 1))

}

return $result

}

function fact2 ([array]$b) {

"Fac:" | Out-File -FilePath E:\1_forPS\result.txt -Encoding ascii -Append

for ($index = 0; $index -lt $b.count; $index++) {

$l = fact($b[$index])

$l | Out-File -FilePath E:\1_forPS\result.txt -Encoding ascii -Append

Write-Output $l

}

}

function pow ([array]$b, $s)

{

"Pow:" | Out-File -FilePath E:\1_forPS\result.txt -Encoding ascii -Append

for($index = 0; $index -lt $b.count; $index++)

{

$k=$s

$step = $b[$index]

while($k -ne 1)

{

$step = $step*$b[$index]

$k--

}

$step | Out-File -FilePath E:\1_forPS\result.txt -Encoding ascii -Append

Write-Host $step

}

}

Результат работы:

Рисунок 1 – Результат выполнения программы

Рисунок 1 – Вывод результата в файл

Вывод: в ходе выполнения лабораторной работы были сформированы практические навыки написания PowerShell-сценариев; изучено понятие PowerShell-сценария, его назначение; разработать PowerShell-сценарий, реализующий арифметические операции и выводящий результат в тектовый файл. Провести моделирование ситуации применения разработанного PowerShell-сценария.