Практическая работа Объекты командной оболочки PowerShell. Практическая работа 6. Практическая работа 6 Объекты командной оболочки PowerShell
Скачать 236.5 Kb.
|
Практическая работа 6 Объекты командной оболочки PowerShell Цель работы: Изучить объекты командной оболочки PowerShell и работу с объектами командной оболочки PowerShell. Программноеобеспечение:Операционные системы: Microsoft Windows 8, или Windows 10. Теоретические сведения Работа с объектами Оболочка PowerShell относится к объектно-ориентированной среде, в которой все действия совершаются над объектами – ресурсам компьютерных систем. Каждый объект в общем случае включает совокупность данных, отражающих свойства объекта, и модули обработки этих данных (методы объекта). Фундаментом оболочки следует считать платформу Microsoft.NET, так как она изначально предназначалась для разработки различных информационных систем. В составе этой платформы уже заложен набор сетевых служб и серверов, что позволяет создать программный образ функционирования любой системы. Часть этой платформы Microsoft.NET Framework предназначается для разработки приложений. Она дает большие преимущества для разработчиков программ в части использования различных систем программирования. Самым мощным достоинством платформы Microsoft.NET служит наличие в ней обширной библиотеки классов (тысячи классов) содержащих готовые, отлаженные и постоянно пополняемые методы обработки. Мощным средством обработки данных в оболочке PowerShell является использование конвейеров. Конвейер – это последовательность команд, разделенных вертикальной чертой « | », в которой результаты обработки одной команды передаются другой команде. В оболочке PowerShell по конвейеру передаются целые объекты, наборы свойств отформатированных данных с требуемой детализацией. Последовательный и пошаговый принцип обработки конвейера позволяет решать, как задачи анализа сложных систем, так и на его базе строить новые информационные системы любой сложности. Проанализируем на примерах, какой арсенал средств может применять пользователь в своей работе. Очень часто при анализе многопрограммной работы компьютера возникает задача определения, какие процессы и как используют ресурсы системы. Начальную информацию можно получить, включив командлет «Get-Process», который отражает часть данных об активных процессах. Результатом работы командлет «Get-Process» является список запущенных в системе процессах. Каждая запись содержит набор параметров-характеристик процессов, Некоторые из них интуитивно понятны (ProcessName – имя процесса, CPU(s) – время, затрачиваемое на работу процесса в секундах), другие имеют не всегда понятные сокращения (рис. 1). Рис. 1. Список запущенных в системе процессах Для понимания смысла сокращений и выяснения полной структуры объекта целесообразно использовать конвейер двух командлетов «Get-Process | Get-Member» (рис. 2). Рис. 2. Формирование полной структуры объекта Для сокращения длины команды и уменьшения трудоемкости набора можно записать конвейер из псевдонимов этих командлетов – «gps | gm» (рис. 3). Рис. 3. Использование псевдонимов при записи командлетов На экран выводится весь перечень свойств процессов. Перед списком указывается, к какому .NET-типу относятся все названия свойств «Diagnostics.Process». Если требуется вывести только определенные категории свойств, то следует задать значение типа параметра (рис. 4). Рис. 4. Определенные категории свойств объекта В оболочке PowerShell имеется несколько конфигурационных файлов, необходимых для отображения объектов различных типов. Они находятся в том же каталоге, что и «powershell.exe», и имеют названия, заканчивающиеся «*format.pslxml» (рис. 5). Рис. 5. Формирование файлов различных типов по заданному окончанию Файл «DotNetTypes.format.pslxm» в этом списке предназначен для формирования объектов System.Diagnostics.Process. Примеры показывают, что количество выводимых данных может быть очень большим, и требуется иметь средства, позволяющие отсеивать ненужную информацию и выделять требуемую. Обычно для этого используются процедуры сортировки и фильтрации. Создание рабочих массивов данных, упорядоченных по определенному параметру, позволяет использовать методы дихотомии согласно зависимости п= log2 N, где п – число проб, в результате которых находятся данные в отсортированном массиве; N– количество элементов в исходном анализируемом массиве. Дихотоми́я – раздвоенность, последовательное деление на две части, не связанные между собой. Способ логического деления класса на подклассы, который состоит в том, что делимое понятие полностью делится на два взаимодополняющих понятия. Дихотомическое деление в математике является способом образования подразделов одного понятия или термина и служит для образования классификации элементов. Существует теорема: «Если непрерывная функция на концах некоторого интервала имеет значения разных знаков, то внутри этого интервала у нее есть корень (как минимум, один, но может быть и несколько)». На базе этой теоремы построено численное нахождение приближенного значения корня функции. Обобщенно этот метод называется дихотомией, т. е. делением отрезка на две части. За операции сортировки данных обычно отвечает командлет «Sort-Object». В качестве его параметра указываются имена свойств, по которым упорядочиваются объекты. Выведем список процессов, упорядоченный по процессорному времени (рис. 6). Рис. 6. Сортировка объектов по указанному имени свойства (по возрастанию) Для получения списка, упорядоченного в порядке убывания процессорного времени, должен быть включен параметр -descending (рис. 7). Рис. 7. Сортировка объектов по указанному имени свойства (по убыванию) Часто в отсортированном списке наибольший интерес представляют записи, имеющие максимальные или минимальные значения некоторых параметров. Для выявления подобных объектов в списке командлетов имеется «Select-Object», который позволяет в отсортированном списке отобрать несколько первых (-First) или последних (-Last) записей. Например, для выявления пяти процессов, использующих наибольшие объемы памяти (свойство WS), можно сформировать команду-конвейер, состоящую из трех командлетов (рис.8. Рис. 8. Пять процессов, использующие наибольших объем памяти Для фильтрации данных обычно используют командлет Where- Object. Например, для определения данных об остановленных службах (свойство «Status» равно «Stopped») следует сформировать команду, приведенную на рис. 9. Рис. 9. Список остановленных процессах операционной системы Появляется информация об остановленных службах. Следует обратить внимание, что для сравнения свойств в фигурных скобках командлета не используются знаки =, <, >, а операторы сравнения задаются мнемоническими сокращениями (табл. 1.2). Таблица 1.2 Операторы сравнения в PowerShell
После выделения требуемой информации и отсева ненужной возникают задачи определения характеристик выделенных объектов. Применение некоторых командлетов позволяет решать часть из них. Одной из типовых задач является определение суммарного объема некоторой группы файлов. Подсчитаем объем памяти с точностью до байта, занимаемый каталогом, например, \BBN. Решение этой задачи можно обеспечить последовательностью команд, изображенных на рис. 10. Первая строка формирует переменную $TotalLength со значением нуль, вторая строка представлена конвейером из двух командлетов, подсчитывающих суммарный объем памяти. Командлет ForEach-Object обеспечивает циклическое накопление суммы. Третья строка считывает полученный итог (рис. 10). Рис. 10. Определение суммарного объема группы файлов Эту же задачу в более расширенном функциональном формате можно решить, используя командлет «Measure-Object» (рис. 11). Рис. 11. Определение суммарного объема группы файлов Этот конвейер может дать больше расчетных данных об объекте. Достаточно знать, какие характеристики интересуют пользователя (рис. 12). Рис. 12.Расчетные данные об объектах с заданными характеристиками Следует помнить, что все командлеты имеют строго ограниченную функциональность, поэтому используются только для решения узких, типовых задач. Творческий характер анализа и обработки характеристик объектов в основном переносится в функции. Задание: Определение конвейера (запомнить). Привести пример применения конвейера. Получить начальную информацию об активных процессах, используя оболочку PowerShell. Расшифровать обозначения: Handles; NPM(K); WS(K); VM(M) Привести пример использования конвейера из двух командлетов «Get-Process | Get-Member» в полном и сокращенном вариантах. Расшифровать столбцы: « MemberType»; «Definition» Получить перечень свойств процессов для заданной категории свойств. Категория свойств процессов «-MemberType Property». С помощью оболочки «PowerShell» найти несколько конфигурационных файлов, заканчивающихся на «*format.pslxml». Выделить файл «DotNetTypes. format.pslxml Пояснить «Методы дихотомии». Определение? Вывести список процессов, упорядоченных по процессорному времени. Вывести список процессов, упорядоченных в порядке убывания процессорного времени. Сформировать команду-конвейер для получения пяти процессов, использующих наибольшие объемы памяти. Отфильтровать данные по остановленным службам, используя команду-конвейер из двух командлет (свойство «Status» равно «Stopped»). Подсчитать объем памяти, занимаемый каталогом (каталог по выбору). Решение задачи – обеспечить последовательностью команд (см. рис. 10). Исправить некорректную запись в команде-конвейер. . Подсчитать объем памяти, занимаемый каталогом (каталог по выбору. Решение задачи обеспечить командлетом «MeasureObject» в двух вариантах: Вариант 1. Расчет памяти, занимаемой каталогом (см.рис. 11). Вариант 2. Расчет памяти, занимаемой каталогом с минимумом и максимумом (см. рис. 12). Отчет по выполненной лабораторной работе: 1. Выполненная работа оформляется в электронном виде (формат А4). 2. Электронный отчет по выполненной работе состоит: -Титульный лист. -Задание на лабораторную работу. -Выполненная работа (пункт задания и копия с экрана: результат работы по пункту задания). |