Доп зпдпния Power Shell. ПАСЗВИ_Дополнительные_задания_Корешкова. Фгбоу впо пензенский государственный университет
Скачать 457.14 Kb.
|
Министерство образования и науки РФ ФГБОУ ВПО «ПЕНЗЕНСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ» Кафедра «Информационная безопасность систем и технологий» О Т Ч Е Т
Пенза, 2016 Результаты работы: 1 Управление компьютером с использованием Windows Powershell 1.1 Управление сеансами пользователей Для просмотра сведений о пользователях, которые осуществили вход на сервер с определенным именем, была запущена командная строк и введена команда: quser /SERVER:«имя_сервера». Полученное сообщение, содержащее сведения о сеансе пользователя, представлено на рисунке 1.1. Рисунок 1.1 – Сведения о пользователях, вошедших на сервер Далее, для завершения сеанса пользователя была введена команда logoffSession_ID /SERVER: «имя_сервера». Для вывода большего количества информации о пользователях был использована утилита qwinsta. Для вывода сведений была введена команда qwinsta /server:«Имя_сервера» (рисунок 1.2) Рисунок 1.2 – Сведения о пользователях, вошедших на сервер, с использование утилиты qwinsta Далее для завершения сеанса работы администратора была введена команд rwinstaSession_ID /server: «имя_сервера». Для еще одного способа работы с сеансами была осуществлена регистрация библиотеки query.dll (рисунок 1.3). . Рисунок 1.3 – Регистрация библиотеки query.dll После регистрации стало возможным использовать команды query и reset: query session /server:«имя_сервера», reset session ID /server:«имя_сервера». Результаты работы команд представлены на рисунке 1.4 Рисунок 1.4 – использование команд query и reset 1.2 Управление питанием: Для завершения сеанса пользователя в командной строке была введена команда shutdown /l. Для быстрой перезагрузки компьютера была введена команда shutdown /r /f /m \\HOST_NAME /t 0, а для выключения компьютера была введена командаshutdown /s /f /m \\HOST_NAME /t 0 (рисунок 1.5), где: r – полное завершение работы и перезагрузка компьютера, f – инудительное закрытие запущенных приложений без уведомления пользователя, m \\компьютер - указание конечного компьютера, s – завершение работы компьютера, t – указание времени ожидания в секундах до завершения работы компьютера. Рисунок 1.5 – Команда для выключения компьютера 1.3 Сбор информации о системе: Для получения сведений о системе была введена команда Get-WMIObject -Class Win32_OperatingSystem (рисунок 1.6). Рисунок 1.6 – Получение сведений о системе Для получения более полной информации о системе была использована команда Get-WMIObject -Class Win32_OperatingSystem | Get-Member (рисунок 1.7). Рисунок 1.7 – Получение подробной информации о системе Для получения полного названия установленной ОС была использована команда (Get-WMIObject -Class Win32_OperatingSystem).Caption (рисунок 1.8). Рисунок 1.8 – Получение полного названия установленной ОС 1.4 Получение данных об установленных приложениях и исправлениях: Для получения сведений об установленном ПО была использована команда Get-WMIObject -Class Win32_Product (рисунок 1.9). Рисунок 1.9 – Получение сведений об установленном ПО Для получения более подробной информации была использована команда Get-WMIObject -Class Win32_Product | Sort-Object Vendor, Name | FT Vendor, Name, Version (рисунок 1.10). Рисунок 1.10 – Получение подробной информации об установленном ПО Для получения информации об определенном ПО, например Adobe Reader 9.1-Russian, была использована команда Get-WMIObject -Class Win32_Product -Filter "Name=’Adobe Reader 9.1 - Russian’" (рисунок 1.11). Рисунок 1.11 – Получение информации об определенном ПО Для получения подробных сведений об установленном ПО, была использована команда в команду указанную выше было добавлено FL -Property * (рисунок 1.12): Get-WMIObject -Class Win32_Product -Filter "Name=’Adobe Reader9.1 - Russian’" | Format-List -Property * Рисунок 1.12 – Получение более подробной информации о ПО Для сбора информации об установленных обновлениях используется команда Get-WMIObject -Class Win32_QuickFixEngineering. Полученая информация была сохранена в файл (рисунок 1.13). Рисунок 1.13 – Получение информации об установленных обновлениях Для получения сведений об определенном исправлении можно использовать rоманду Get-WMIObject -ClassWin32_QuickFixEngineering –ComputerName W2K12-R2.wps.local | where-object {$_.hotfixid -eq "KB2949621"}. Результаты были сохранены в файл(рисунок 1.14). Рисунок 1.14 – Получение информации об определенном обновлении Установка ПО: Для установки файлового менеджера FreeCommander была использована следующая команда: (Get-WMIObject -ComputerName W2K12-R2.wps.local -List | Where-Object -FilterScript {$_.Name –eq "Win32_Product"}).Install(“\\W2K12-R2.wps.local \Dist\freeCommander.05.2007.msi”). Результат установки представлен на рисунке 1.15. Рисунок 1.15 – Установка нового приложения Обновление ПО: Для обновления приложения OldTools была использована команда: (Get-WmiObject -Class Win32_Product -ComputerName W2K12-R2.wps.local -Filter Name=‘OldTools’").Upgrade(“\\W2K12-R2.wps.local\Deploy\Package_01\OldTools.msi”) Удаление ПО: Для удаления ПО была использована команда: (Get-WMIObject -Class Win32_Product –Filter "Name=’freeCommander05.2007’" -ComputerName W2K12-R2.wps.local).Uninstall() 2 Создание скриптов с использованием Powershell 2.1 Создание скриптов: Для создания скрипта необходимо создать документ с расширением .ps1. В созданный скрипт была добавлена запись: Write-Host "Hello!" . Затем был запущен скрипт командой .\script_1.ps1. В результате было выдано сообщение об ошибке (рисунок 2.1) Рисунок 2.1 – Ошибка при первом запуске скрипта 2.2 Установка уровня политики ExecutionPolicy: Сообщение было связано с тем, что в настройках по умолчанию, установлена возможность интерактивного выполнения только команд, а выполнение скриптов запрещено. Для исправления ошибки, был изменен уровень политики ExecutionPolicy на уровень RemoteSigned. Для изменения уровня политики использовалась команда Set-ExecutionPolicy RemoteSigned (рисунок 2.2). Рисунок 2.2 – Изменение уровня политики ExecutionPolicy 2.3 Подписывание скриптов: Для подписывания скрипта использовалась программа makecert.exe. для ее использования в командной строке была введена команда: cd "C:\Program Files (x86)\Windows Kits\8.1\bin\x64\" Далее для создания сертификата была введена команда (рисунок 2.3): makecert -n "CN=PowerShell Local Certificate Root" -a sha1 –eku 1.3.6.1.5.5.7.3.3 -r -sv root.pvk root.cer -ss Root –sr localMachine Рисунок 2.3 – Создание сертификата С помощью команды makecert -pe -n "CN=PowerShellUser" -ssMY -asha1 –eku 1.3.6.1.5.5.7.3.3 -ivroot.pvk -icroot.cer был сформирован сертификат (рисунок 2.4). Рисунок 2.4 – Формирование сертификата В результате должны были создаться два файла root.cer и root.pvk. Для проверки успешного создания сертификатов была использована команда: Get-ChildItemcert:\CurrentUser\My –codesign. Результаты проверки представлены на рисунке 2.5 Рисунок 2.5 – Проверка создания сертификата Для подписи созданных скриптов была введена сначала команда: $cert = @(Get-ChildItem cert:\CurrentUser\My -codesigning)[0]. Далее была выполнена команда Set-AuthenticodeSignature $file $cert. Результаты подписи скриптов сертиыикатами представлены на рисунке 2.6. Рисунок 2.6 – Подпись скриптов сертификатами После проведения всех необходимых процедур была проверена работоспособность созданного скрипта (рисунок 2.7). Рисунок 2.7 – Проверка работоспособности созданного скрипта 3 Работа с аргументами: 3.1 Создание функции: Была создана проверочная функция, которая выполняет команду Get-Process | Where {$_.name -eq "cmd"} Текст функции: function test_func { Get-Process | Where {$_.name -eq "cmd"} } Для проверки работоспособности созданной функции был запущен процесс cmd и запущена функция test_func (рисунок 3.1). Рисунок 3.1 – Проверка работоспособности функции 3.2 Обработка аргументов функции: Для примера работы функций с аргументами была создана функция показывающая содержимое каталога: function test_func { Get-ChildItem $args[0] } Для вызова функции используется аргумент, указывающий на каталог: test_func "С:\Program Files" (рисунок 3.2). При работе с функциями может использоваться два и более аргументов. Для примера приведена функция выполняющая поиск файлов с размером больше чем 1024. Рисунок 3.2 – Пример работы функции с использованием аргументов Текст функции: function FileSizeSearch ($dir, $minSize) { Get-ChildItem $dir -Recurse | Where {$_.length -gt $minSize} } Так же, с использованием оболочки PowerShell ISE, был создан скрипт выполняющий аналогичное действие. Текст скрипта: function FileSizeSearch ($dir, $minSize) { Get-ChildItem $dir -Recurse | Where {$_.length -gt $minSize} } FileSizeSearch Для выполнения функция была введена команда FileSizeSearch -dir c:\scripts –minSize 1024 (рисунок 3.3). Так же была проверена работоспособность созданного скрипта (рисунок 3.4). Рисунок 3.3 – проверка работоспособности функции с двумя аргументами Рисунок 3.4 – Проверка работоспособности созданного скрипта, выполняющего поиск файлов Также были заданы критерии поиска в коде самой функции, определив их значение по умолчанию. Текст функции для поиска файлов: function FileSize ($dir = "C:\Scripts", $minSize=1024) { Get-ChildItem $dir -Recurse | Where {$_.length -gt $minSize} } Пример работы функции с заранее определенными параметрами представлен на рисунке 3.5 Рисунок 3.5 – Пример работы функции с заранее определенными параметрами Так же при разработке кода функции, можно использовать проверку типа вводимых аргументов. Пример кода функции с проверкой типа переменных представлен на рисунке 3.6. Рисунок 3.6 – Пример работы функции с проверкой типа переменных Аргументы для скриптов: Сохраненный ранее скрипт поиска файлов был переработан. Код скрипта представлен далее. function FileSizeSearch ([string]$dir = "C:\Scripts", [int]$minSize=1024) { Get-ChildItem $dir -Recurse | Where {$_.length -gt $minSize} } # обработка входных переменных FileSizeSearch -dir $args[0] -minSize $args[1] Результат работы скрипта представлен на рисунке 3.7. Рисунок 3.7 – Поверка работы скрипта, реализующего поиск файлов, с использованием аргументов При большом количестве аргументов можно использовать параметры запуска скрипта с их определением в коде. Например, функция поиска файлов: param($param1, $param2) function FileSizeSearch ([string]$dir = "C:\Scripts", [int]$minSize=1024) { Get-ChildItem $dir -Recurse | Where {$_.length -gt $minSize} } # обработкавходныхпеременных FileSizeSearch -dir $param1 -minSize $param2 Результаты работы скритпа, с использованием параметров, представлено на рисунке 3.8. Рисунок 3.8 – Проверка работы скрипта с использованием параметров 4 Практическое задание: Задание 1. Разработать скрипт, осуществляющий копирование файлов из одного каталога в другой. Разработать скрипт, осуществляющий копирование дерева каталогов. Задание 2. Разработать скрипт, осуществляющий создание файлов и каталогов, а также скрипт, осуществляющий удаление файлов и каталогов. Задание 3. Разработать скрипт, осуществляющий сбор сведений о работающих процессах. Задание 4. Разработать скрипт, осуществляющий сбор сведений о работающих службах и поиск определенной службы. Также разработать скрипт, собирающий сведения об остановленных службах и службах которые могут быть запущены. Результат: 1 Был разработан скрипт, осуществляющий копирование файлов из одного каталога в другой. Код скрипта CopyFiles.ps1:
Пример работы cкрипта представлен на рисунке 4.1. Рисунок 4.1 – Пример работы скрипта, копирующего файлы из одного каталога в другой Был разработан скрипт, осуществляющий копирование дерева каталогов. Код скрипта CopyFolder.ps1:
Пример работы cкрипта представлен на рисунке 4.2. Рисунок 4.2 – Пример работы скрипта, копирующего дерево каталогов 4.2 Был разработа скрипт, осуществляющий создание новых файлов и каталогов. Код скрипта NewFiles.ps1:
Пример работы cкрипта представлен на рисунке 4.3. Рисунок 4.3 – Пример работы скрипта, создающего новые файлы и каталоги Был разработан скрипт, осуществляющий удаление файлов и каталогов. Код скрипта DeletItem.ps1:
Пример работы cкрипта представлен на рисунке 4.4. Рисунок 4.4 – Пример работы скрипта, удаляющего файлы и каталоги 4.3 Был разработан скрипт, осуществляющий сбор сведений о работающих процессах. Код скрипта GetProcess.ps1:
Пример работы cкрипта представлен на рисунке 4.5. Рисунок 4.5 – Пример работы скрипта, осуществляющего сбор сведений о работающих процессах 4.4 Был разработан скрипт, осуществляющий сбор сведений о работающих службах и поиск определенной службы. Код скрипта GetServiceR.ps1:
Пример работы cкрипта представлен на рисунке 4.6. Рисунок 4.6 – Пример работы скрипта, осуществляющего сбор сведений о работающих службах и поиск определенной службы Был разработан скрипт, собирающий сведения об остановленных службах и службах которые могут быть запущены. Код скрипта GetServiceS.ps1:
Пример работы cкрипта представлен на рисунке 4.7. Рисунок 4.7 – Пример работы скрипта, собирающего сведения об остановленных службах и службах которые могут быть запущены |