Использование консольной утилиты Diskpart в среде PowerShell предоставляет системным администраторам исчерпывающий инструментарий для низкоуровневой работы с дисковыми накопителями, логическими томами и виртуальными файлами VHD.
Интеграция утилиты в сценарии PowerShell позволяет полностью автоматизировать подготовку инфраструктуры, разметку накопителей и управление атрибутами без вызова графических оснасток.
В представленном руководстве подробно разобраны методы выполнения синтаксиса Diskpart из PowerShell, а также приведен полный справочник всех команд утилиты с точными примерами использования.
PowerShell удобнее для работы с diskpart, потому что даёт больше контроля: можно автоматизировать операции, проверять диски через объекты, получать подробный вывод и использовать скрипты. CMD в основном подходит для простых ручных команд, а PowerShell лучше для администрирования и массовых операций с дисками.
diskpart — это встроенная утилита Windows для управления дисками, разделами, томами и форматированием через командную строку.
- Смотри также тут: Windows XP и USB: подготовка USB флешки
Методы запуска и автоматизации Diskpart в PowerShell
Консольная утилита Diskpart является интерактивным командным интерпретатором, который по умолчанию ожидает ввода инструкций от пользователя. В среде PowerShell существуют три основных способа передачи команд утилите для одиночного исполнения или автоматической пакетной обработки.
Первый метод заключается в прямой передаче строки команд через стандартный конвейер PowerShell. Этот вариант удобен для выполнения быстрой одиночной операции.
Например:
"list disk" | diskpart

Второй метод использует встроенную функциональность многострочных строк PowerShell (Here-Strings). Он позволяет сформировать последовательный сценарий из нескольких команд и передать его на исполнение в едином потоке.
Например:
$script = @"
select disk 1
clean
convert gpt
create partition primary
format fs=ntfs quick label="Data"
assign letter=E
"@
$script | diskpart
Третий метод основан на запуске утилиты с ключом /s, указывающим на внешний текстовый файл, содержащий подготовленный набор инструкций Diskpart.
Например:
diskpart /s C:\Scripts\disk_setup.txt
Выбор объекта и управление контекстом
Перед выполнением любых модификаций в Diskpart необходимо явно указать целевой элемент.
Команды группы select фокусируют утилиту на конкретном диске, разделе, томе или виртуальном накопителе:
-
select disk— устанавливает фокус на указанный физический или виртуальный диск по его системному номеру. Пример:select disk 1 -
select partition— переключает контекст на конкретный раздел выбранного в данный момент диска. Пример:select partition 1 -
select volume— фиксирует фокус на логическом томе по его номеру или букве файловой системы. Пример:select volume D -
select vdisk— выбирает файл виртуального жесткого диска по указанному пути в файловой системе. Пример:select vdisk file="C:\vdisks\system.vhdx"
Вывод списков и получения детальной информации
Для анализа структуры хранения и проверки текущего состояния накопителей применяются команды листинга и детализации.
Они выводят основные свойства объектов и помогают избежать ошибок при последующей разметке:
-
list disk— отображает сводный список всех физических и виртуальных дисков, подключенных к операционной системе. Пример:list disk -
list partition— выводит перечень всех созданных разделов на текущем выбранном диске. Пример:list partition -
list volume— показывает таблицу всех логических томов системы с указанием файловых систем, букв и статусов. Пример:list volume -
list vdisk— формирует список всех подключенных и смонтированных виртуальных дисков. Пример:list vdisk -
detail disk— выводит исчерпывающую информацию о выбранном диске, включая ID, тип шины, статус и входящие в него тома. Пример:detail disk -
detail partition— отображает подробные сведения о типе раздела, его смещении, активности и связанном томе. Пример:detail partition -
detail volume— показывает свойства выбранного тома, параметры отказоустойчивости и монтирования. Пример:detail volume -
detail vdisk— выводит технические данные файла виртуального диска, включая его реальный и максимальный размер. Пример:detail vdisk
Создание разделов, томов и виртуальных дисков
Команды группы create применяются для нарезки нераспределенного пространства накопителей.
В зависимости от типа таблицы (MBR или GPT) и структуры диска создаются соответствующие типы разделов или массивов:
-
create partition primary— создает основной раздел заданного размера на базовом диске. Пример:create partition primary size=50000 -
create partition extended— создает расширенный раздел на диске MBR для дальнейшего формирования логических дисков. Пример:create partition extended size=100000 -
create partition logical— формирует логический диск внутри ранее созданного расширенного раздела. Пример:create partition logical size=20000 -
create partition efi— создает системный раздел EFI, необходимый для загрузки операционной системы на дисках GPT. Пример:create partition efi size=100 -
create partition msr— формирует служебный раздел MSR (Microsoft Reserved), требуемый для обслуживания GPT-разметки. Пример:create partition msr size=16 -
create volume simple— создает простой том на динамическом диске из указанного объема свободного места. Пример:create volume simple size=30000 disk=1 -
create volume stripe— формирует чередующийся том (RAID-0) на двух или более динамических дисках для повышения скорости. Пример:create volume stripe size=50000 disk=1,2 -
create volume span— объединяет нераспределенные области нескольких физических дисков в единый составной том. Пример:create volume span size=40000 disk=1,2 -
create volume mirror— создает зеркалированный том (RAID-1) на двух динамических дисках для отказоустойчивого хранения. Пример:create volume mirror size=60000 disk=1,2 -
create vdisk— инициализирует новый файл виртуального жесткого диска VHD или VHDX заданной емкости. Пример:create vdisk file="C:\vdisks\data.vhdx" maximum=100000 type=expandable
Удаление структур и объектов
Удаление объектов выполняется через группу команд delete.
Эти операции уничтожают существующие логические структуры и требуют точной предварительной проверки выбранного контекста:
-
delete disk— удаляет отсутствующий динамический диск из списка томов при восстановлении сбойных массивов. Пример:delete disk override -
delete partition— уничтожает выбранный раздел на диске с возможностью применения принудительного флага. Пример:delete partition override -
delete volume— полностью удаляет выбранный логический том со всеми хранящимися на нем данными. Пример:delete volume -
delete shadow— удаляет теневые копии тома по их идентификаторам или с выбранного диска. Пример:delete shadow oldest C:
Модификация, форматирование и изменение размеров
После создания логических структур требуется их подготовка к работе в файловой системе.
Набор данных команд отвечает за очистку, форматирование, масштабирование и управление буквами дисков:
-
clean— удаляет всю разметку и служебные заголовки MBR или GPT с выбранного диска, превращая его в неразмеченный. Пример:clean -
clean all— выполняет полное обнуление всех секторов диска, перезаписывая каждый блок нулями для уничтожения данных. Пример:clean all -
format— форматирует том или раздел в указанную файловую систему с опциональным заданием метки тома. Пример:format fs=ntfs quick label="Storage" -
extend— увеличивает объем выбранного тома за счет смежного нераспределенного пространства на диске. Пример:extend size=20000 -
shrink— уменьшает размер тома на указанную величину, освобождая пространство под новые разделы. Пример:shrink desired=10000 minimum=5000 -
assign— назначает тому свободную букву диска или монтирует его в пустую папку на другом томе. Пример:assign letter=E -
remove— удаляет назначенную букву диска или точку монтирования у выбранного тома. Пример:remove letter=E -
active— помечает выбранный основной раздел на MBR-диске как активный для загрузки операционной системы. Пример:active -
inactive— снимает статус активного загрузочного раздела на диске со стилем разметки MBR. Пример:inactive
Конвертация стилей разметки и типов дисков
Переход между различными архитектурами таблиц разделов требует использования специализированных команд конвертации.
Операции конвертации выполняются только на полностью очищенных дисках:
-
convert gpt— преобразует пустой диск со стилем MBR в современную таблицу разделов GPT. Пример:convert gpt -
convert mbr— конвертирует пустой диск с разметки GPT в классический стиль MBR. Пример:convert mbr -
convert dynamic— преобразует базовый физический диск в динамический для создания программных RAID-массивов. Пример:convert dynamic -
convert basic— возвращает пустой динамический диск в состояние базового накопителя. Пример:convert basic
Управление атрибутами, виртуализацией и системными режимами
Низкоуровневая настройка работы оборудования включает блокировку записи, управление политикой подключения внешних дисков SAN и работу с файлами VHD.
Например, вот список всех команд и мое пояснение:
-
attributes disk set readonly— переводит физический диск в режим «Только для чтения», запрещая любые изменения. Пример:attributes disk set readonly -
attributes disk clear readonly— снимает флаг ограничения записи с выбранного дискового накопителя. Пример:attributes disk clear readonly -
attributes volume set readonly— блокирует запись и изменение структуры данных для конкретного логического тома. Пример:attributes volume set readonly -
attributes volume clear readonly— разрешает стандартные операции записи на выбранном томе. Пример:attributes volume clear readonly -
attributes vdisk— отображает или изменяет специфические атрибуты файла виртуального жесткого диска. Пример:attributes vdisk set readonly -
attach vdisk— монтирует файл виртуального диска VHD или VHDX в операционную систему как физическое устройство. Пример:attach vdisk -
detach vdisk— отключает ранее смонтированный виртуальный диск от системы. Пример:detach vdisk -
expand vdisk— увеличивает предельно допустимый виртуальный объем файла VHDX. Пример:expand vdisk maximum=200000 -
merge vdisk— объединяет разностный виртуальный диск с его родительским базовым образом. Пример:merge vdisk depth=1 -
online— переводит диск или том из отключенного автономного состояния в активный режим. Пример:online disk -
offline— переводит диск или том в автономный режим, делая его недоступным для операционной системы. Пример:offline disk -
san— показывает или устанавливает глобальную политику автоматического монтирования дисков из сетей хранения данных. Пример:san policy=OnlineAll -
automount— включает или выключает автоматическое монтирование новых томов при их обнаружении системой. Пример:automount enable -
rescan— запускает повторное сканирование шин и контроллеров для обнаружения вновь подключенных дисков. Пример:rescan -
import— импортирует внешнюю группу динамических дисков в текущую операционную систему. Пример:import -
repair— восстанавливает поврежденный отказоустойчивый динамический том (RAID-1 или RAID-5) с помощью нового диска. Пример:repair disk=2 -
break— разделяет зеркалированный том (RAID-1) на два независимых простых тома. Пример:break disk=2 nokeep -
add— добавляет выбранный диск к простому тому для создания зеркалированного массива RAID-1. Пример:add disk=2 -
retain— подготавливает динамический том к назначению в качестве системного или загрузочного раздела. Пример:retain -
override— специальный модификатор параметров, позволяющий принудительно выполнять команды в обход защитных предупреждений. Пример:delete partition override -
help— выводит список всех команд утилиты или открывает подробную справку по конкретному ключу. Пример:help create partition -
exit— корректно завершает работу консольного интерпретатора Diskpart и возвращает управление в сессию PowerShell. Пример:exit
Высший пилотаж и разбор сложного примера
Связка командного интерпретатора PowerShell и низкоуровневой утилиты Diskpart открывает возможности для создания сценариев корпоративного класса, исключающих человеческий фактор при работе с дисковыми массивами.
В качестве примера высшего пилотажа мы разберем скрипт динамического поиска неразмеченного накопителя и его автоматической подготовки под установку Windows по стандарту UEFI с точным расчетом скрытых томов. Этот метод демонстрирует, как аналитическая логика оболочки безупречно управляет жестким синтаксисом дисковой утилиты, формируя безопасную инфраструктуру на лету.
Архитектура динамического сценария и безопасность выполнения
Профессиональное администрирование инфраструктуры требует полного отказа от жесткого кодирования (hardcoding) номеров дисков в скриптах.
Классическая ошибка начинающих инженеров заключается в статичной передаче команды select disk 0 или select disk 1, что при малейшем изменении аппаратной конфигурации сервера неминуемо приводит к форматированию тома с критически важными данными. Высший уровень мастерства подразумевает создание самоадаптирующихся алгоритмов, которые самостоятельно исследуют среду перед внесением деструктивных изменений.
Наша задача — написать код, который найдет в системе абсолютно чистый, неинициализированный SSD-накопитель, извлечет его системный индекс и передаст эту переменную в генерируемый в оперативной памяти блок инструкций. Подобный подход массово применяется при развертывании операционных систем по сети (PXE) или при автоматизированной подготовке виртуальных машин в облачных кластерах. Скрипт берет на себя самую ответственную и опасную часть работы: безошибочную идентификацию правильного целевого устройства (таргета).
Для реализации задуманного мы задействуем встроенные командлеты модуля Storage, которые позволяют отфильтровать устройства по их текущему аппаратному состоянию и стилю разметки.
Как только искомый накопитель найден, PowerShell использует механизм интерполяции многострочных строк, подставляя вычисленный номер диска в текстовый шаблон. В результате Diskpart получает математически точный и абсолютно безопасный набор команд, сформированный за миллисекунды до фактического выполнения.
Программный код автоматизированного UEFI-развертывания
Представленный ниже сценарий решает сложную комплексную задачу: он размечает чистый накопитель строго согласно официальным спецификациям Microsoft для современных систем с интерфейсом UEFI.
Код не просто создает базовые логические диски, он тонко настраивает систему, присваивая разделам специфические идентификаторы GUID и защитные атрибуты GPT. Это необходимо, чтобы скрыть служебные области от глаз конечного пользователя и защитить их от случайного удаления средствами операционной системы.
$targetDisk = Get-Disk | Where-Object { $_.PartitionStyle -eq 'RAW' -and $_.OperationalStatus -eq 'Online' } | Select-Object -First 1
if ($targetDisk) {
$diskNum = $targetDisk.Number
Write-Output "Обнаружен чистый накопитель: Диск $diskNum. Начинается разметка..."
$diskpartScript = @"
select disk $diskNum
clean
convert gpt
create partition primary size=1000
format quick fs=ntfs label="WinRE"
set id="de94bba4-06d1-4d40-a16a-bfd50179d6ac"
gpt attributes=0x8000000000000001
create partition efi size=260
format quick fs=fat32 label="System"
create partition msr size=16
create partition primary
format quick fs=ntfs label="Windows"
assign letter="W"
exit
"@
$diskpartScript | diskpart
Write-Output "Разметка диска успешно завершена."
} else {
Write-Warning "Неразмеченные диски (RAW) не найдены. Операция прервана в целях безопасности."
}
В первой рабочей строке командлет Get-Disk опрашивает все контроллеры хранения данных, а конвейер Where-Object жестко фильтрует массив результатов, оставляя только те диски, которые имеют статус Online и таблицу разделов RAW (полностью пустые, без инициализации). Это программный предохранитель высшего порядка: скрипт физически откажется передавать команды в Diskpart, если не найдет диск, стопроцентно подходящий под критерии безопасного развертывания.
Блок @" ... "@ формирует конструкцию Here-String, внутри которой переменная $diskNum раскрывается в реальный индекс устройства. Мы намеренно уходим от использования внешних текстовых файлов с параметром /s, инкапсулируя всю логику внутри одного скрипта .ps1. Важно отметить, что такой метод позволяет применять низкоуровневые атрибуты на лету, избавляя администратора от рутинного ручного ввода сложнейших шестнадцатеричных кодов через интерфейс командной строки.
Детальный разбор низкоуровневых команд утилиты
Синтаксис внутри сформированной строки подчиняется суровым правилам разметки GUID Partition Table.
Любое отклонение от очередности создания томов приведет к тому, что операционная система Windows либо откажется устанавливаться на подготовленный массив, либо потеряет способность корректно инициализировать среду восстановления при критическом сбое. Разработанный сценарий маниакально соблюдает эталонную дисковую топологию.
Особого профессионального внимания заслуживают команды манипуляции с глобальными идентификаторами и атрибутами безопасности. Обычное форматирование через графическую оснастку делает раздел видимым в «Проводнике», что категорически неприемлемо для системных загрузочных областей. Грамотное использование параметров модификации структуры GPT позволяет на уровне микрокода запретить монтирование тома и скрыть его от стороннего софта.
Ниже представлен подробный построчный анализ ключевых инструкций, переданных из памяти PowerShell напрямую в интерпретатор Diskpart. Это фундаментальные знания низкоуровневой подготовки носителей, которыми должен владеть каждый профильный системный инженер:
-
create partition primary size=1000— формирует базовый раздел объемом 1000 мегабайт, который будет выполнять функцию изолированной среды восстановления (Windows RE), необходимой для диагностики ОС. -
set id="de94bba4-06d1-4d40-a16a-bfd50179d6ac"— присваивает только что созданному разделу жестко заданный спецификацией GUID, который сообщает загрузчику Windows, что перед ним именно том среды восстановления, а не стандартный диск с пользовательскими данными. -
gpt attributes=0x8000000000000001— накладывает комплексную битовую маску защиты системного уровня. Единица на конце помечает раздел как критически важный для работы, а восьмерка в начале блокирует автоматическое назначение буквы диска и монтирование. -
create partition efi size=260— выделяет 260 мегабайт дискового пространства под системный загрузчик EFI. Согласно стандарту UEFI, этот микро-раздел должен создаваться на накопителе сразу после Recovery, но строго перед основным логическим массивом. -
format quick fs=fat32 label="System"— форматирует загрузочный том исключительно в файловую систему FAT32, так как микропрограммы современных материнских плат физически не умеют читать NTFS на базовом этапе инициализации оборудования. -
create partition msr size=16— резервирует 16 мегабайт пространства под невидимый служебный раздел Microsoft Reserved. Он никогда не форматируется и используется операционной системой для прозрачных внутренних операций с секторами. -
create partition primary— забирает весь оставшийся объем нераспределенного дискового пространства под основной системный диск, на который впоследствии установщик распакует файлы операционной системы из образа WIM.

Я, Ирина Петрова-Левин, выпускница Московского Технического Университета Связи и Информатики, где получила образование в области информационных технологий. Мой профессиональный путь связан с языком Python, а также с глубоким интересом к тому, как современные технологии влияют на повседневную жизнь. Я стараюсь объяснять сложные процессы так, чтобы они становились понятными каждому, без потери точности и сути.
С 2019 года живу в Далласе, что позволяет мне сочетать опыт российской инженерной школы с американским технологическим подходом. В своих материалах я стремлюсь показывать реальные механизмы работы технологий и предметов вокруг нас, делая информацию одновременно доступной, практичной и структурированной.






