Skip to content

Практическая работа №4

Основные теоретические положения

Section titled “Основные теоретические положения”

1. Системные службы Windows

Section titled “1. Системные службы Windows”

Служба Windows — программа или компонент, который может работать в фоновом режиме без непосредственного взаимодействия с пользователем. Службы обеспечивают работу различных компонентов операционной системы и прикладного ПО.

Нужно различать два понятия:

ХарактеристикаЧто означает
StatusТекущее состояние службы (Running, Stopped и др.)
StartTypeРежим запуска (Automatic, Manual, Disabled и др.)

Получение сведений:

Terminal window
Get-Service
Get-Service | Select-Object -First 10 Name, DisplayName, Status, StartType

PowerShell передаёт через конвейер объекты, а не готовый текст таблицы. У объекта службы есть свойства, по которым можно отбирать и группировать записи.

Terminal window
Get-Service | Select-Object -First 1 | Get-Member -MemberType Properties

Выбор полей выполняется через Select-Object:

Terminal window
Get-Service | Select-Object -First 5 Name, Status, StartType

3. Фильтрация и сортировка

Section titled “3. Фильтрация и сортировка”

Where-Object оставляет объекты, соответствующие условию. В блоке { ... } переменная $_ обозначает текущий объект.

Terminal window
Get-Service |
Where-Object { $_.Status -eq 'Running' } |
Sort-Object DisplayName |
Select-Object -First 10 Name, DisplayName, Status

Операторы условий:

ОператорЗначение
-eq, -neравно, не равно
-and, -orлогическое И, ИЛИ
-matchсоответствие регулярному выражению

Пример с двумя условиями:

Terminal window
Get-Service |
Where-Object {
$_.Status -eq 'Stopped' -and $_.StartType -eq 'Automatic'
}

4. Группировка и подсчёт

Section titled “4. Группировка и подсчёт”

Group-Object группирует объекты по значению свойства:

Terminal window
Get-Service |
Group-Object Status |
Select-Object Name, Count

Measure-Object позволяет определить число объектов:

Terminal window
Get-Service | Measure-Object

5. Экспорт и повторное чтение CSV

Section titled “5. Экспорт и повторное чтение CSV”

Export-Csv сохраняет свойства объектов, а Import-Csv восстанавливает строки таблицы как объекты с текстовыми свойствами.

Terminal window
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. Подготовка и исследование объектов

  1. Откройте Windows PowerShell.

  2. Создайте учебный каталог и перейдите в него:

    Terminal window
    $root = Join-Path $HOME 'OSIS_PS\services_audit'
    New-Item -ItemType Directory -Path $root -Force | Out-Null
    Set-Location -LiteralPath $root
  3. Найдите документацию по Get-Service, Where-Object, Group-Object:

    Terminal window
    Get-Help Get-Service -Syntax
    Get-Help Where-Object -Syntax
    Get-Help Group-Object -Syntax
  4. Исследуйте свойства одного объекта службы с помощью Get-Member.

  5. Выведите первые 10 служб со свойствами Name, DisplayName, Status, StartType.

  6. Объясните разницу между Name и DisplayName.

Задание 1.2. Фильтрация и сортировка

  1. Получите только работающие службы (Running).
  2. Отсортируйте их по DisplayName и выведите первые 15 с полями Name, DisplayName, Status.
  3. Измените конвейер: выведите только остановленные службы (Stopped), отсортированные по Name.
  4. Выведите службы с режимом запуска Automatic и текущим состоянием Stopped. Запишите количество найденных объектов; нулевой результат допустим.
  5. Ответьте: почему наличие остановленной службы с автоматическим запуском не является достаточным доказательством неисправности?

Задание 1.3. Группировка и статистика (10 минут)

  1. Получите общее число служб с помощью Measure-Object.
  2. Сгруппируйте службы по состоянию Status, отобразите Name и Count.
  3. Отдельно сгруппируйте их по типу запуска StartType.
  4. Проверьте, что сумма количеств всех групп по Status совпадает с общим числом служб.
  5. Объясните, почему группировка полезнее последовательного ручного подсчёта служб в каждой категории.

Задание 1.4. Снимок системы и проверка CSV

  1. Сохраните в переменную $services актуальные сведения обо всех службах:

    Terminal window
    $services = Get-Service |
    Select-Object Name, DisplayName, Status, StartType
  2. Экспортируйте снимок в services.csv внутри учебного каталога:

    Terminal window
    $services | Export-Csv -LiteralPath (Join-Path $root 'services.csv') `
    -NoTypeInformation -Encoding UTF8
  3. Сохраните группировку снимка по статусам в 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
  4. Импортируйте services.csv:

    Terminal window
    $imported = Import-Csv -LiteralPath (Join-Path $root 'services.csv')
    $imported | Select-Object -First 5
  5. Убедитесь, что число записей $imported совпадает с числом объектов $services. Объясните, чем снимок отличается от повторного запроса Get-Service через несколько минут.


Часть 2. Индивидуальное задание

Section titled “Часть 2. Индивидуальное задание”

Вариант 1. Проверка автоматически запускаемых служб

Работник технической поддержки проверяет, какие службы с автоматическим запуском сейчас не работают.

  1. Отберите службы, у которых StartType равно Automatic, а Status — Stopped.
  2. Отсортируйте результат по Name.
  3. Выведите поля Name, DisplayName, Status, StartType.
  4. Сохраните выборку в variant_01.csv.
  5. Определите число отобранных служб и объясните, почему они не обязательно неисправны.

Вариант 2. Инвентаризация отключённых служб

Необходимо определить службы, для которых отключён запуск.

  1. Отберите службы, у которых StartType равно Disabled.
  2. Отсортируйте их по DisplayName.
  3. Сохраните в variant_02.csv поля Name, DisplayName, Status, StartType.
  4. Посчитайте число отключённых служб.
  5. Объясните, чем Disabled отличается от Stopped.

Вариант 3. Службы с ручным запуском, которые сейчас работают

Нужно получить список работающих служб, не настроенных на автоматический запуск.

  1. Отберите службы с StartType = Manual и Status = Running.
  2. Отсортируйте их по Name.
  3. Сохраните в variant_03.csv поля Name, Status, StartType.
  4. Подсчитайте количество записей.
  5. Объясните, как служба с ручным запуском могла оказаться в состоянии Running.

Вариант 4. Инвентаризация по имени службы

Для выборочного аудита необходимо найти службы по диапазону первых букв их системного имени.

  1. Выберите службы, у которых Name начинается с латинской буквы от A до M (используйте -match '^[A-M]').
  2. Отсортируйте результат по Name.
  3. Сохраните поля Name, DisplayName, Status в variant_04.csv.
  4. Определите общее количество объектов и распределение выбранных служб по состояниям.
  5. Объясните, почему фильтрация по Name обычно устойчивее к языку интерфейса Windows, чем фильтрация по DisplayName.

Вариант 5. Сводка по состоянию и режиму запуска

Руководителю требуется сводка о распределении служб одновременно по двум признакам.

  1. Сгруппируйте $services по Status и StartType одновременно.
  2. Сохраните поля Name (название комбинации) и Count в variant_05.csv.
  3. Отсортируйте группы по количеству в убывающем порядке.
  4. Определите наиболее многочисленную комбинацию состояний.
  5. Проверьте, что сумма всех Count равна общему числу служб.

Вариант 6. Аудит работающих служб по типам запуска

Необходимо выяснить, какие режимы запуска встречаются среди активных служб.

  1. Отберите только службы в состоянии Running.
  2. Сгруппируйте их по StartType.
  3. Отсортируйте группы по Count по убыванию.
  4. Сохраните Name, Count в variant_06.csv.
  5. Убедитесь, что сумма Count в сводке равна числу работающих служб в исходном снимке; объясните результат.

Проверка и сдача работы

Section titled “Проверка и сдача работы”
  1. Покажите преподавателю выполненный собственный конвейер индивидуального варианта и объясните порядок обработки объектов.

  2. Предъявите в каталоге $root файлы services.csv, status_summary.csv и variant_XX.csv (или variant_XX_empty.txt, если выборка пуста).

  3. Заполните краткую таблицу по своему компьютеру:

    ПоказательЗначение
    Всего обнаружено служб
    Работающих (Running)
    Остановленных (Stopped)
    Число записей индивидуального отчёта
  4. Напишите вывод из 3–5 предложений: что удалось выяснить об ОС, какие свойства объектов использованы и для чего в системном администрировании нужны CSV-отчёты.

Дополнительное задание для успевших: сохраните ещё одну CSV-сводку по сочетанию Status и StartType и укажите, какая комбинация наиболее многочисленная.

  1. Для чего нужны системные службы Windows?
  2. Чем Status отличается от StartType?
  3. Что такое объект в PowerShell? Назовите три свойства объекта службы.
  4. Какую роль играет переменная $_ в Where-Object?
  5. Чем отличаются Where-Object, Sort-Object, Select-Object и Group-Object?
  6. Почему порядок командлетов в конвейере влияет на результат?
  7. Почему не следует ставить Format-Table перед Export-Csv?
  8. В чём различие между Get-Service и ранее сохранённым CSV-снимком?
  9. Почему остановленная служба не обязательно неисправна?
  10. Как вы проверили правильность количественных результатов своего отчёта?

Рекомендуемая литература

Section titled “Рекомендуемая литература”
  1. Microsoft Learn — Get-Service.
  2. Microsoft Learn — Where-Object.
  3. Microsoft Learn — Group-Object.
  4. Microsoft Learn — Export-Csv.
  5. Microsoft Learn — Import-Csv.