33

Диагностика и восстановление дисков с помощью PowerShell

продолжение статьи Как проверить и исправить ошибки на жестком диске в Windows: шпаргалка по CHKDSK и PowerShell

Дисклеймер. На пикабу все еще не завезли редактор кода, поэтому такое убогое форматирование. Впрочем, вы можете читать статью на github


PowerShell позволяет автоматизировать проверки, выполнять удалённую диагностику и создавать гибкие скрипты для мониторинга. Это руководство проведёт вас от базовых проверок до глубокой диагностики и восстановления дисков.

Версия: Руководство актуально для Windows 10/11 и Windows Server 2016+.

Ключевые командлеты для работы с дисками

Основные командлеты

Диагностика и восстановление дисков с помощью PowerShell Powershell, Инструкция, Администрирование, Диагностика, IT, Длиннопост

Шаг 1: Базовая проверка состояния системы

Начните с общей оценки состояния дисковой подсистемы.

Просмотр всех подключенных дисков

Команда Get-Disk предоставляет сводную информацию о всех дисках, которые видит операционная система.

Get-Disk

Вы увидите таблицу с номерами дисков, их размерами, статусом (Online или Offline) и стилем разделов (MBR или GPT).

Пример: Найти все диски, которые находятся в офлайне.

Get-Disk | Where-Object IsOffline -eq $true

Проверка физического «здоровья» дисков

Командлет Get-PhysicalDisk обращается к состоянию самого оборудования.

Get-PhysicalDisk | Select-Object FriendlyName, MediaType, HealthStatus, OperationalStatus

Обратите особое внимание на поле HealthStatus. Оно может принимать значения:

  • Healthy: Диск в порядке.

  • Warning: Есть проблемы, требуется внимание (например, превышение порогов S.M.A.R.T.).

  • Unhealthy: Диск в критическом состоянии и может отказать.


Шаг 2: Анализ и восстановление логических томов

После проверки физического состояния переходим к логической структуре — томам и файловой системе.

Информация о логических томах

Команда Get-Volume показывает все смонтированные тома в системе.

Get-Volume | Format-Table DriveLetter, FileSystem, HealthStatus, SizeRemaining, Size

Ключевые поля:

  • DriveLetter — Буква тома (C, D и т.д.).

  • FileSystem — Тип файловой системы (NTFS, ReFS, FAT32).

  • HealthStatus — Состояние тома.

  • SizeRemaining и Size — Свободное и общее пространство.

Проверка и восстановление тома (аналог chkdsk)

Командлет Repair-Volume — это современная замена утилиты chkdsk.

1. Проверка тома без исправлений (только сканирование)

Этот режим безопасен для выполнения на работающей системе, он только ищет ошибки.

Repair-Volume -DriveLetter C -Scan

2. Полное сканирование и исправление ошибок

Этот режим является аналогом chkdsk C: /f. Он блокирует том на время работы, поэтому для системного диска потребуется перезагрузка.

Repair-Volume -DriveLetter C -OfflineScanAndFix

❗️ Важно: Если вы запускаете эту команду для системного диска (C:), PowerShell запланирует проверку при следующей загрузке системы. Чтобы запустить её немедленно, перезагрузите компьютер.

Пример: Автоматически проверить и исправить все тома, состояние которых отлично от Healthy.

Get-Volume | Where-Object {$_.HealthStatus -ne 'Healthy'} | ForEach-Object { Write-Host "Repairing volume $($_.DriveLetter)..." Repair-Volume -DriveLetter $_.DriveLetter -OfflineScanAndFix }


Шаг 3: Глубокая диагностика и S.M.A.R.T.

Если базовые проверки не выявили проблем, но подозрения остались, можно копнуть глубже.

Анализ системных журналов

Ошибки дисковой подсистемы часто фиксируются в системном журнале Windows.

Get-WinEvent -LogName System | Where-Object {$_.Message -like "*disk*"} | Select-Object -First 20

Для более точного поиска можно фильтровать по источнику события:

Get-WinEvent -ProviderName 'Microsoft-Windows-DiskDiagnostic' -MaxEvents 10

Проверка статуса S.M.A.R.T.

S.M.A.R.T. (Self-Monitoring, Analysis and Reporting Technology) — технология самодиагностики дисков. PowerShell позволяет получить эти данные.

Способ 1: Использование WMI (для совместимости)

Get-WmiObject -Namespace "root\wmi" -Class MSStorageDriver_FailurePredictStatus

Если PredictFailure = True, диск предсказывает скорый сбой. Это сигнал к немедленной замене.

Способ 2: Современный подход через CIM и Storage-модули

Более современный и подробный способ — использовать командлет Get-StorageReliabilityCounter.

Get-PhysicalDisk | Get-StorageReliabilityCounter | Select-Object PhysicalDisk, Wear, Temperature, ReadErrorsTotal, WriteErrorsTotal

Этот командлет предоставляет ценную информацию, такую как износ (актуально для SSD), температуру и количество ошибок чтения/записи.


Практические сценарии для системного администратора

Вот несколько готовых примеров для повседневных задач.

1. Получить краткий отчет о здоровье всех физических дисков.

Get-PhysicalDisk | Format-Table DeviceID, FriendlyName, MediaType, HealthStatus, OperationalStatus

2. Создать CSV-отчет о свободном месте на всех томах.

Диагностика и восстановление дисков с помощью PowerShell Powershell, Инструкция, Администрирование, Диагностика, IT, Длиннопост

3. Найти все разделы на конкретном диске (например, диске 0).

Get-Partition -DiskNumber 0

4. Запустить диагностику системного диска с последующей перезагрузкой.

Repair-Volume -DriveLetter C -OfflineScanAndFix Restart-Computer -Force

Полезно? Подпишись.

Удачи!

UPD:

Встречайте серию:

Философия PowerShell.

Лига Сисадминов

2.2K поста18.8K подписчиков

Правила сообщества

Мы здесь рады любым постам связанным с рабочими буднями специалистов нашей сферы деятельности.