Практическая работа Объекты командной оболочки PowerShell. Практическая работа 6. Практическая работа 6 Объекты командной оболочки PowerShell
![]()
|
Практическая работа 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. Электронный отчет по выполненной работе состоит: -Титульный лист. -Задание на лабораторную работу. -Выполненная работа (пункт задания и копия с экрана: результат работы по пункту задания). |