Практическая работа №4
Основные теоретические положения
Section titled “Основные теоретические положения”1. Системные службы Windows
Section titled “1. Системные службы Windows”Служба Windows — программа или компонент, который может работать в фоновом режиме без непосредственного взаимодействия с пользователем. Службы обеспечивают работу различных компонентов операционной системы и прикладного ПО.
Нужно различать два понятия:
| Характеристика | Что означает |
|---|---|
Status | Текущее состояние службы (Running, Stopped и др.) |
StartType | Режим запуска (Automatic, Manual, Disabled и др.) |
Получение сведений:
Get-ServiceGet-Service | Select-Object -First 10 Name, DisplayName, Status, StartType2. Объекты и свойства
Section titled “2. Объекты и свойства”PowerShell передаёт через конвейер объекты, а не готовый текст таблицы. У объекта службы есть свойства, по которым можно отбирать и группировать записи.
Get-Service | Select-Object -First 1 | Get-Member -MemberType PropertiesВыбор полей выполняется через Select-Object:
Get-Service | Select-Object -First 5 Name, Status, StartType3. Фильтрация и сортировка
Section titled “3. Фильтрация и сортировка”Where-Object оставляет объекты, соответствующие условию. В блоке { ... } переменная $_ обозначает текущий объект.
Get-Service | Where-Object { $_.Status -eq 'Running' } | Sort-Object DisplayName | Select-Object -First 10 Name, DisplayName, StatusОператоры условий:
| Оператор | Значение |
|---|---|
-eq, -ne | равно, не равно |
-and, -or | логическое И, ИЛИ |
-match | соответствие регулярному выражению |
Пример с двумя условиями:
Get-Service | Where-Object { $_.Status -eq 'Stopped' -and $_.StartType -eq 'Automatic' }4. Группировка и подсчёт
Section titled “4. Группировка и подсчёт”Group-Object группирует объекты по значению свойства:
Get-Service | Group-Object Status | Select-Object Name, CountMeasure-Object позволяет определить число объектов:
Get-Service | Measure-Object5. Экспорт и повторное чтение CSV
Section titled “5. Экспорт и повторное чтение CSV”Export-Csv сохраняет свойства объектов, а Import-Csv восстанавливает строки таблицы как объекты с текстовыми свойствами.
Get-Service | Select-Object Name, DisplayName, Status, StartType | Export-Csv -LiteralPath '.\services.csv' -NoTypeInformation -Encoding UTF8
Import-Csv -LiteralPath '.\services.csv' | Select-Object -First 5После импорта Status и StartType являются строками, поэтому сравнения с 'Running', 'Automatic' и т. д. выполняются как сравнения текста.
Задания для выполнения
Section titled “Задания для выполнения”Часть 1. Исследование и анализ системных служб
Section titled “Часть 1. Исследование и анализ системных служб”Выполните все задания общей части, затем один индивидуальный вариант.
Задание 1.1. Подготовка и исследование объектов
-
Откройте Windows PowerShell.
-
Создайте учебный каталог и перейдите в него:
Terminal window $root = Join-Path $HOME 'OSIS_PS\services_audit'New-Item -ItemType Directory -Path $root -Force | Out-NullSet-Location -LiteralPath $root -
Найдите документацию по
Get-Service,Where-Object,Group-Object:Terminal window Get-Help Get-Service -SyntaxGet-Help Where-Object -SyntaxGet-Help Group-Object -Syntax -
Исследуйте свойства одного объекта службы с помощью
Get-Member. -
Выведите первые 10 служб со свойствами
Name,DisplayName,Status,StartType. -
Объясните разницу между
NameиDisplayName.
Задание 1.2. Фильтрация и сортировка
- Получите только работающие службы (
Running). - Отсортируйте их по
DisplayNameи выведите первые 15 с полямиName,DisplayName,Status. - Измените конвейер: выведите только остановленные службы (
Stopped), отсортированные поName. - Выведите службы с режимом запуска
Automaticи текущим состояниемStopped. Запишите количество найденных объектов; нулевой результат допустим. - Ответьте: почему наличие остановленной службы с автоматическим запуском не является достаточным доказательством неисправности?
Задание 1.3. Группировка и статистика (10 минут)
- Получите общее число служб с помощью
Measure-Object. - Сгруппируйте службы по состоянию
Status, отобразитеNameиCount. - Отдельно сгруппируйте их по типу запуска
StartType. - Проверьте, что сумма количеств всех групп по
Statusсовпадает с общим числом служб. - Объясните, почему группировка полезнее последовательного ручного подсчёта служб в каждой категории.
Задание 1.4. Снимок системы и проверка CSV
-
Сохраните в переменную
$servicesактуальные сведения обо всех службах:Terminal window $services = Get-Service |Select-Object Name, DisplayName, Status, StartType -
Экспортируйте снимок в
services.csvвнутри учебного каталога:Terminal window $services | Export-Csv -LiteralPath (Join-Path $root 'services.csv') `-NoTypeInformation -Encoding UTF8 -
Сохраните группировку снимка по статусам в
status_summary.csv:Terminal window $services |Group-Object Status |Select-Object Name, Count |Export-Csv -LiteralPath (Join-Path $root 'status_summary.csv') `-NoTypeInformation -Encoding UTF8 -
Импортируйте
services.csv:Terminal window $imported = Import-Csv -LiteralPath (Join-Path $root 'services.csv')$imported | Select-Object -First 5 -
Убедитесь, что число записей
$importedсовпадает с числом объектов$services. Объясните, чем снимок отличается от повторного запросаGet-Serviceчерез несколько минут.
Часть 2. Индивидуальное задание
Section titled “Часть 2. Индивидуальное задание”Вариант 1. Проверка автоматически запускаемых служб
Работник технической поддержки проверяет, какие службы с автоматическим запуском сейчас не работают.
- Отберите службы, у которых
StartTypeравноAutomatic, аStatus—Stopped. - Отсортируйте результат по
Name. - Выведите поля
Name,DisplayName,Status,StartType. - Сохраните выборку в
variant_01.csv. - Определите число отобранных служб и объясните, почему они не обязательно неисправны.
Вариант 2. Инвентаризация отключённых служб
Необходимо определить службы, для которых отключён запуск.
- Отберите службы, у которых
StartTypeравноDisabled. - Отсортируйте их по
DisplayName. - Сохраните в
variant_02.csvполяName,DisplayName,Status,StartType. - Посчитайте число отключённых служб.
- Объясните, чем
Disabledотличается отStopped.
Вариант 3. Службы с ручным запуском, которые сейчас работают
Нужно получить список работающих служб, не настроенных на автоматический запуск.
- Отберите службы с
StartType = ManualиStatus = Running. - Отсортируйте их по
Name. - Сохраните в
variant_03.csvполяName,Status,StartType. - Подсчитайте количество записей.
- Объясните, как служба с ручным запуском могла оказаться в состоянии
Running.
Вариант 4. Инвентаризация по имени службы
Для выборочного аудита необходимо найти службы по диапазону первых букв их системного имени.
- Выберите службы, у которых
Nameначинается с латинской буквы от A до M (используйте-match '^[A-M]'). - Отсортируйте результат по
Name. - Сохраните поля
Name,DisplayName,Statusвvariant_04.csv. - Определите общее количество объектов и распределение выбранных служб по состояниям.
- Объясните, почему фильтрация по
Nameобычно устойчивее к языку интерфейса Windows, чем фильтрация поDisplayName.
Вариант 5. Сводка по состоянию и режиму запуска
Руководителю требуется сводка о распределении служб одновременно по двум признакам.
- Сгруппируйте
$servicesпоStatusиStartTypeодновременно. - Сохраните поля
Name(название комбинации) иCountвvariant_05.csv. - Отсортируйте группы по количеству в убывающем порядке.
- Определите наиболее многочисленную комбинацию состояний.
- Проверьте, что сумма всех
Countравна общему числу служб.
Вариант 6. Аудит работающих служб по типам запуска
Необходимо выяснить, какие режимы запуска встречаются среди активных служб.
- Отберите только службы в состоянии
Running. - Сгруппируйте их по
StartType. - Отсортируйте группы по
Countпо убыванию. - Сохраните
Name,Countвvariant_06.csv. - Убедитесь, что сумма
Countв сводке равна числу работающих служб в исходном снимке; объясните результат.
Проверка и сдача работы
Section titled “Проверка и сдача работы”-
Покажите преподавателю выполненный собственный конвейер индивидуального варианта и объясните порядок обработки объектов.
-
Предъявите в каталоге
$rootфайлыservices.csv,status_summary.csvиvariant_XX.csv(илиvariant_XX_empty.txt, если выборка пуста). -
Заполните краткую таблицу по своему компьютеру:
Показатель Значение Всего обнаружено служб Работающих ( Running)Остановленных ( Stopped)Число записей индивидуального отчёта -
Напишите вывод из 3–5 предложений: что удалось выяснить об ОС, какие свойства объектов использованы и для чего в системном администрировании нужны CSV-отчёты.
Дополнительное задание для успевших: сохраните ещё одну CSV-сводку по сочетанию Status и StartType и укажите, какая комбинация наиболее многочисленная.
Контрольные вопросы
Section titled “Контрольные вопросы”- Для чего нужны системные службы Windows?
- Чем
Statusотличается отStartType? - Что такое объект в PowerShell? Назовите три свойства объекта службы.
- Какую роль играет переменная
$_вWhere-Object? - Чем отличаются
Where-Object,Sort-Object,Select-ObjectиGroup-Object? - Почему порядок командлетов в конвейере влияет на результат?
- Почему не следует ставить
Format-TableпередExport-Csv? - В чём различие между
Get-Serviceи ранее сохранённым CSV-снимком? - Почему остановленная служба не обязательно неисправна?
- Как вы проверили правильность количественных результатов своего отчёта?