2019-01-07

PowerShell: Работа с дисками и разделами

Для работы с дисками и разделами в ОС Windows имеется два инструмента, консольная программа diskpart, и оснастка "Управление дисками" diskmgmt.msc. С внедрением командной оболочки PowerShell, появился еще один инструмент - сама оболочка PowerShell.



Содержание




PowerShell


Информация на википедии по данной командной оболочке.


Учитывая наличие в ОС Windows, встроенных средств работы с дисками и разделами, указанными в начале статьи, причем это неплохие инструменты, можно задаться вопросом - зачем использовать PowerShell? Самым главным преимуществом данной командной оболочки, это удобство. Вся оболочка устроена так, чтобы необходимый результат можно было получить быстро, просто и в удобной форме. Кроме этого, PowerShell является командной оболочкой по умолчанию для ОС Windows 10, вместо устаревшей CMD.

PowerShell содержит в себе все необходимые командлеты и функции, для управления дисками и разделами.


Диски


Начнем со списка операций для дисков. Очистка диска - то есть удаление таблицы разделов. Установка таблицы разделов - создание таблицы разделов указанного формата на диске, возможные форматы MBR или GPT. Изменение типа таблицы разделов - конвертация таблицы разделов из одного формата в другой.


Для выполнения дальнейших действий необходимо, чтобы командная оболочка PowerShell была запущена от имени администратора (Win+X ➜ Windows PowerShell (администратор)).


Кроме этого, необходимо будет узнать номер диска, с которым будут производиться последующие манипуляции. Поможет в этом командлет Get-Disk. Подробнее о выводе информации о дисках и разделах в PowerShell можно прочесть тут.


В моем случае, целевыми будут диски под номерами 2 (флешка) и 3 (виртуальный жесткий диск). Все дальнейшие действия будут производиться именно с этими дисками.

Внимание! Все последующие действия влекут за собой потерю имеющейся информации на целевом диске.


Очистка Диска


Для очистки диска от существующих разделов, используется командлет Clear-Disk. Он производит полное удаление текущей таблицы разделов с указанного диска. 

Перед выполнением очистки, проверим текущее состояние дисков.

# Запускаем оснастку "Управление дисками"
diskmgmt.msc

# Выводим информацию о дисках
Get-Disk 2,3

# Выводим информацию о разделах диска "2" и "3"
Get-Partition 2,3

# Выводи информацию о томах дисков "2" и "3"
Get-Partition 2,3 | Get-Volume


Выполним очистку дисков 2 и 3.

# Очистка дисков "2" и "3" от таблицы разделов
Clear-Disk -Number 2,3 -RemoveData -RemoveOEM


Снова проверим состояние дисков и их разделов.


Диски очищены. Но обратите внимание на диск 2, флешку. Если виртуальный жесткий диск, под номер 3, не содержит таблицы разделов вовсе, то есть тип таблицы указан RAW, то у флешки после очистки тип таблицы разделов по прежнему MBR.

Связано это с тем, что операционная система Windows по особому относится к флешкам, не как к полноценным жестким дискам. Даже если вы выполните полное "обнуление" флешки, то будете приятно удивлены тем, что Windows будет определять эту пустоту как RAW-раздел. На самой флешке при этом будет присутствовать таблица разделов MBR.


Установка Таблицы Разделов


Процедура установки таблицы разделов, или инициализации, предполагает подготовку диска к первому использованию, а именно, выполнение записи таблицы разделов указанного формата на указанный диск. Выполняется инициализация, формально, только один раз, и только для дисков с таблицей разделов RAW.


Немного о формате таблицы разделов RAW. Это не формат таблицы разделов! Дело в том, что операционная система, при подключении диска, пытается отыскать на нем таблицу разделов известного ей формата. Если найти ничего не удалось, то есть ОС не нашла ничего похожего на структуру разделов MBR или GPT, то такой диск помечается как RAW.

Получить RAW-диск, можно выполнив его "обнуление", например с помощью программы dd или BOOTICE. Причем затереть достаточно только сектора содержащие таблицу разделов (первые сектора диска - для MBR первый сектор, первые 512 байт диска, для GPT первые и последние 34 сектора диска). Или с помощью командлета Clear-Disk.

Выполняется инициализация с помощью командлета Initialize-Disk.

Демонстрации работы команды, будет производиться над диском 3 (виртуальный жесткий диск).


Выполняем команду инициализации диска.

# Инициализируем диск под номером "3", таблицей разделов "GPT"
Initialize-Disk -Number 3 -PartitionStyle GPT


Инициализация диска выполнена.


Важное замечание. Как было сказано выше, инициализировать диск можно только один раз. Любая повторная попытка выполнить инициализацию приведет к ошибке. Повторную инициализацию можно выполнить только после очистки диска.


И второе важное замечание. Инициализация диска, не работает для флешек. Проблема данная завязана с восприятием Windows съемных USB-устройств. Для Windows, флешка пока не является полноценным жестким диском, о чем уже упоминалось в конце предыдущего раздела.


Изменение Параметров Диска


Изменение параметров диска осуществляется с помощью командлета Set-Disk. Какие параметры с его помощью можно изменить? Первое, это тип используемой таблицы разделов MBR/GPT. Второе, доступность диска для записи. Третье, изменить состояние доступности диска Online/Offline (В сети/Вне сети).


Изменение Типа Используемой Таблицы Разделов


Данная операция доступна для всех видов дисков. Важно, выполнить преобразование таблицы разделов можно только на неразмеченном диске. То есть, для выполнения преобразования таблицы разделов из одного формата, например MBR в GPT, и обратно, потребуется удалить все разделы на целевом диске (если они конечно присутствовали до этого).

Выполним преобразование таблицы разделов для дисков 2 и 3 в формат GPT.

# Получаем информацию о дисках "2" и "3"
Get-Disk 2,3

# Устанавливаем тип таблицы разделов GPT для диска "2"
Set-Disk 2 -PartitionStyle GPT

# Устанавливаем тип таблицы разделов GPT для диска "3"
Set-Disk 3 -PartitionStyle GPT

# Получаем информацию о дисках "2" и "3"
Get-Disk 2,3


Преобразование к типу таблицы разделов MBR производится аналогично.

# Устанавливаем тип таблицы разделов MBR для диска "2"
Set-Disk 2 -PartitionStyle MBR

# Устанавливаем тип таблицы разделов MBR для диска "3"
Set-Disk 3 -PartitionStyle MBR


Изменение Параметра Чтения/Записи


Выставление данного параметра в включенное состояние, приводит к невозможности записывать данные на целевой диск. Любые операции записи, изменения, удаления для диска будут недоступны. Но, данное ограничение будет действовать лишь на вашей машине.

Команда включения режима только чтение, для указанного диска выглядит так:

# Выставляем параметр "Только чтение" для диска "2" в включенное состояние
Set-Disk 2 -IsReadOnly 1

# Выводим список параметров диска 2 начинающихся с "is"
Get-Disk 2 | fl is*


Выключение осуществляется следующей командой:

# Выставляем параметр "Только чтение" для диска "2" в выключенное состояние
Set-Disk 2 -IsReadOnly 0

# Выводим список параметров диска 2 начинающихся с "is"
Get-Disk 2 | fl is*



Изменение Состояния В сети/Вне сети


Изменение состояния диска на Online/Offline (В сети/Вне сети), возможно только для несъемных накопителей. Данная настройка отключает/подключает указанный диск от операционной системы. При этом само устройство, то есть драйвер, остается включенным и к нему можно обратиться на более низком уровне.

Иными словами, переведя диск в состояние Offline, станут невозможными следующие действия: Подключение, создание, удаление, изменение разделов диска, изменение каких либо других параметров диска.

Переведем диск в состояние "Вне сети" (Offline).

# Выставляем параметр "Offline" для диска "3" в включенное состояние
Set-Disk 3 -IsOffline 1

# Выводим список параметров диска 3 начинающихся с "is"
Get-Disk 3 | fl is*



И обратный процесс, перевод диска в состояние "В сети" (Online).

# Выставляем параметр "Offline" для диска "3" в выключенное состояние
Set-Disk 3 -IsOffline 0

# Выводим список параметров диска 2 начинающихся с "is"
Get-Disk 3 | fl is*



Разделы


Список операций с разделами: Создание, Изменение размера, Удаление и Изменение параметров.


Как и прежде, PowerShell должен быть запущен от имени администратора.


Создание Раздела


Создание разделов осуществляется с помощью командлета New-Partition. При создании раздела можно указать следующие параметры:

-Size - размер создаваемого раздела (обязательный).
-Offset - смещение раздела от начала диска.
-GptType/-MbrType - тип раздела.
-DriveLetter - буква раздела.
-IsHidden - пометить раздел как скрытый (только для GPT).
-IsActive - пометить раздел как активный (только для MBR).
-AssignDriveLetter - автоподключение раздела с назначением буквы.
-UseMaximumSize - использовать максимально доступное пространство (обязательный если не использован -Size).

Создадим первый раздел на неразмеченном диске.

# Создаем раздел размером 100МБ на диске "3"
New-Partition -DiskNumber 3 -Size 100MB


Создадим еще один раздел, но уже со смещением от начала диска.

# Создаем раздел размером 100МБ на диске "3" со смещением 150МБ от начала диска
New-Partition -DiskNumber 3 -Size 100MB -Offset 150MB


Важно, смещение всегда задается от начала диска, не от ближайшего раздела.

Создадим раздел, с автоматическим назначением буквы.

# Создаем раздел максимального размера, с автоматическим назначением буквы
New-Partition -DiskNumber 3 -UseMaximumSize -AssignDriveLetter


Автоматические назначение буквы, присваивает свободную букву только что созданному разделу, и выполняет подключение раздела, то есть его монтирование в ОС.


Изменение Размера Раздела


Изменение размера раздела осуществляется с помощью командлета Resize-Partition. Параметры командлета:

-DiskNumber - номер целевого диска.
-PartitionNumber - номер целевого раздела.
-Size - целевой размер раздела.

Все параметры обязательные.

Попробуем изменить размер разделов тестового диска под номером 3.


На данный момент на диске два раздела, первый 500МБ, второй 484МБ. Оба занимают все доступное пространство диска. Узнаем номер первого раздела.

# Вывод списка разделов диска "3"
Get-Partition 3


Первый раздел, расположился под номером 2. Все это из-за того, что при установке таблицы разделов GPT, с помощью ОС Windows, на диске автоматически создается специальный служебный MSR-раздел. На снимке выше, он отмечен как Reserved.

Изменим размер первого раздела.

# Изменение размера раздела 2 на диске 3, до размера в 400МБ
Resize-Partition -DiskNumber 3 -PartitionNumber 2 -Size 400MB

# Вывод списка разделов диска "3"
Get-Partition 3


Целевой раздел уменьшен. Важно, любое изменение размера всегда происходит с конца раздела. То есть, в сложившейся ситуации, высвободив место после раздела 2, его нельзя будет использовать для увеличения размера раздела 3. Замечу, что нельзя штатными инструментами ОС Windows.

Полученное свободное пространство можно использовать для увеличения размера раздела 2, или для создания нового раздела.


Удаление Раздела


Удаление разделов осуществляется с помощью командлета Remove-Partition. Параметры командлета:

-DiskNumber - номер целевого диска.
-PartitionNumber - номер целевого раздела.

Все параметры обязательные.

Удалим последний раздел тестового диска 3.


Перед удалением, необходимо узнать номер целевого раздела.

# Вывод списка разделов диска "3"
Get-Partition 3


Целевой раздел расположен под номер 3. Выполним его удаление.

# Удаление раздела "3" диска "3"
Remove-Partition -DiskNumber 3 -PartitionNumber 3

# Вывод списка разделов диска "3"
Get-Partition 3


Раздел успешно удален.


Изменение Параметров Раздела


Изменение параметров раздела осуществляется с помощью командлета Set-Partition. Параметры которые можно изменить:

-GptType и -MbrType - установка типа раздела, то есть его ID.
-IsActive - пометить раздел как активный (только для MBR).
-IsDAX - форматирует раздел в формат DirectAccess (DAX).
-IsHidden - пометить раздел как скрытый (только для GPT)
-IsOffline - переводит раздел в автономный режим.
-IsReadOnly - перевести раздел в режим только чтение.
-IsShadowCopy - ???
-NewDriveLetter - установить новую букву для раздела.
-NoDefaultDriveLetter - отключает автоматическое назначение буквы раздела.
-Offset - задает смещение от начала диска.

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

В списке параметров выше, оранжевым цветом отмечены малополезные. Среди них, к примеру параметр -IsShadowCopy не имеет описания вовсе, причем на сайте тоже. Исходя из названия понятно, что он имеет отношение к теневому копированию. Активация данного параметра никак не отображает его в списке разделов с активным теневым копированием.


Параметр -Offset не работает вовсе. Конечно, было бы очень полезно иметь возможность перемещать разделы, указывая смещение, но увы, применение данного параметра вызывает ошибку.



Изменение Типа GPT-раздела 


Список возможных типов (ID) для GPT-разделов можно посмотреть тут. Сама команда изменения будет иметь следующий вид:

# Изменение типа GPT-раздела под номером "2" диска "3" на тип "Windows Recovery"
Set-Partition -DiskNumber 3 -PartitionNumber 2 -GptType '{DE94BBA4-06D1-4D40-A16A-BFD50179D6AC}'



Изменение Типа MBR-раздела


Список возможных типов (ID) для MBR-разделов можно посмотреть тут. Сама команда изменения будет иметь следующий вид:

# Изменение типа MBR-раздела под номером "1" диска "3" на тип "IFS"
Set-Partition -DiskNumber 3 -PartitionNumber 1 -MbrType 0x07



Установка Новой Буквы Раздела


Поменять текущую, или установить отсутствующую букву для раздела можно следующей командой:

# Установка буквы "G" для раздела "1" диска "3"
Set-Partition -DiskNumber 3 -PartitionNumber 1 -NewDriveLetter G



Режим Только Чтение


Данный режим можно выставлять только для несъемных дисков. То есть, сделать раздел доступный только для чтения на флешке не получится.

Команда включения режима только чтения, для указанного раздела жесткого диска, выглядит следующим образом:

# Установка параметра "только чтение" для раздела "1" диска "3"
Set-Partition -DiskNumber 3 -PartitionNumber 1 -IsReadOnly 1


Выключить данный режим, можно так:

# Выключение параметра "только чтение" для раздела "1" диска "3"
Set-Partition -DiskNumber 3 -PartitionNumber 1 -IsReadOnly 0


Подключение Раздела


Подключение раздела, то есть присвоение пути доступа, или буквы, осуществляется с помощью командлета Add-PartitionAccessPath.

Пример подключения раздела.

# Подключение раздела "1" диска "3" под буквой "V"
Add-PartitionAccessPath -DiskNumber 3 -PartitionNumber 1 -AccessPath 'V:'



Отключение Раздела


Отключение раздела, то есть удаление пути доступа, или буквы, осуществляется с помощью командлета Remove-PartitionAccessPath.

Пример отключения раздела.

# Отключение раздела, удаление буквы "V" раздела "1" диска "3"
Remove-PartitionAccessPath -DiskNumber 3 -PartitionNumber 1 -AccessPath 'V:'



Тома


Информацию о работе с томами можно было бы отнести к разделам, но все же учитывая то, что тома и разделы это не одно и тоже, тема томов будет рассмотрена отдельно.

Чем отличается том (volume) от раздела (partition)? Том является частью раздела, его логическим представлением. Логическое представление в данном случае, это доступное пространство раздела представленное файловой системой. То есть том, это представление содержимого раздела. Раздел, это физическая часть диска, то есть последовательная часть его секторов.

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

Операции с томами: Создание, Форматирование, Изменение параметров, Восстановление, Оптимизация.



Создание Тома


Создание тома осуществляется командлетом New-Volume. Том, с помощью этого командлета, создается минуя процесс создания раздела, с одним ограничением - том можно создать только на диске без разделов или RAW-диске. Для GPT-дисков, разрешено только наличие MSR-раздела.

По факту, в случае отсутствия разделов, данный командлет создает единственный раздел, занимающий все доступное пространство диска, выполняет его форматирование и подключение. Если, командлет выполняется для RAW-диска, то сперва производится инициализация диска таблицей разделов GPT.

Так как инициализацию диска невозможна для съемных устройств, то применить данный командлет в отношении флешки не получится.


Команда создания нового тома, будет иметь следующий вид:

# Создание нового тома с файловой системой "NTFS" на диске "3"
# с последующим подключением его под буквой "G:"
New-Volume -DiskNumber 3 -FriendlyName 'VHD' -FileSystem NTFS -AccessPath 'G:'



Форматирование Тома


Форматирование тома выполнятся с помощью командлета Format-Volume. Возможные параметры:

-AllocationUnitSize - размер кластера.
-Compress - использовать сжатие для NTFS-разделов.
-FileSystem - тип файловой системы (NTFS, ReFS, exFAT, FAT32, и FAT).
-Full - флаг выполнения полного посекторного форматирования.
-IsDAX - форматирует раздел в формат DirectAccess (DAX).
-NewFileSystemLabel - новая метка тома.
-UseLargeFRS - использовать большой сегмент записи файла в таблице MFT.

Оранжевым цветом отмечены редко используемые параметры.

Выполним быстрое форматирование RAW-тома.

# Форматирование тома "V" файловой системой "NTFS" с установкой метки "VHD"
Format-Volume V -FileSystem NTFS -NewFileSystemLabel 'VHD'



Изменение Параметров Тома


Изменение параметров тома осуществляется с помощью командлета Set-Volume. Из доступных параметров для изменения:

-NewFileSystemLabel - установка новой метки тома.
-DedupMode - установка режима дедупликации для тома (Disabled, GeneralPurpose, HyperV, Backup, NotAvailable).

Оранжевым цветом в данном случае отмечен только параметр -DedupMode. Используется он для организации дедупликации, и доступен только в серверной редакции ОС Windows, начиная с версии 2012 и выше.

Выполним смену метки тома.

# Установка новой метки "VirtualDrive" для тома "V" 
Set-Volume -DriveLetter V -NewFileSystemLabel 'VirtualDrive'



Восстановление Тома


Восстановление тома, то есть исправление ошибок его файловой системы, выполняется с помощью командлета Repair-Volume. Возможные параметры:

-OfflineScanAndFix - сканирование и исправление ошибок с отключением тома (аналог chkdsk /f).
-Scan - сканирование на наличие ошибок, с последующем исправлением если не требуется отключение тома.
-SpotFix - точечное исправление уже известных ошибок (аналог chkdsk /spotfix).

Немного ясности по поводу параметра -SpotFix. ОС Windows (начиная с Windows Vista) содержит в себе службы, которые фиксируют и исправляют, по возможности, найденные ошибки в фоновом режиме. Ошибки исправить которые не удалось при активной работе ОС, сохраняются в специальный журнал. Данные из этого журнала используются при выполнении исправления ошибок с параметром -SpotFix.

Пример запуска исправления ошибок тома.

# Сканирование тома "V" на наличие ошибок
Repair-Volume -DriveLetter V -Scan

# Точечное исправление ошибок тома "V"
Repair-Volume -DriveLetter V -SpotFix

# Отключение тома "V" с последующим сканированием и исправлением ошибок
Repair-Volume -DriveLetter V -OfflineScanAndFix



Оптимизация Тома


Оптимизация тома выполняется с помощью командлета Optimize-Volume. Возможные параметры:

-Analyze - выполнить анализ фрагментированности тома.
-Defrag - выполнить дефрагментацию тома.
-ReTrim - выполнить операцию TRIM для SSD накопителя.
-SlabConsolidate - выполнить объединение данных объединенных дисковых пространств.
-TierOptimize - выполнить оптимизацию многоуровневого хранилища.

Оранжевым цветом отмечены параметры, ориентированные для объединенных дисковых пространств, дисковых пулов. Используется в основном в серверном сегменте. Поэтому данные параметры можно отнести к редко используемым.

Важным нюансом оптимизации является то, что при отсутствии вышеуказанных параметров, система определит тип диска на котором расположен оптимизируемый том, и выполнит соответствующую оптимизацию по умолчанию для конкретного типа накопителя.

Пример команд оптимизации.

# Анализ и дефрагментация тома "V" с подробным выводом информации
Optimize-Volume -DriveLetter V -Analyze -Defrag -Verbose



Итог


В статье было рассмотрено:  Как выполнить очистку диска с помощью PowerShell? Как выполнить установку таблицы разделов с помощью PowerShell? Как изменить тип используемой таблицы разделов с помощью PowerShell? Как изменить параметры диска с помощью PowerShell? Как создать раздел с помощью PowerShell? Как изменить размер раздела с помощью PowerShell? Как удалить раздел с помощью PowerShell? Как изменить параметры раздела с помощью PowerShell? Как подключить раздел с помощью PowerShell? Как отключить раздел с помощью PowerShell? Как создать том с помощью PowerShell? Как отформатировать том с помощью PowerShell? Как изменить параметры тома с помощью PowerShell? Как восстановить том с помощью PowerShell? Как оптимизировать том с помощью PowerShell?

Комментариев нет :

Отправка комментария