
OS_LR5 (powershell арфиметические операции)
.docx
|
Министерство науки и высшего образования Российской Федерации Калужский филиал федерального государственного бюджетного образовательного учреждения высшего образования «Московский государственный технический университет имени Н.Э. Баумана (национальный исследовательский университет)» (КФ МГТУ им. Н.Э. Баумана) |
ФАКУЛЬТЕТ _ИУК «Информатика и управление»
КАФЕДРА ИУК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-сценария.