В этой статье мы рассмотрим процесс управления дисками, разделами и томами из командной строки PowerShell. Все операции по работе с локальными дисками и разделами, которые вы привыкли выполнять с помощью графической консоли «Управление дисками» (diskmgmt.msc) или из командной строки утилиты diskpart.exe, вы можете выполнить из PowerShell. Командлеты управления дисками включены в модуль Storage , доступный в PowerShell 3.0. Мы посмотрим как инициализировать диск, создать на нем таблицу разделов, раздел и отформатировать его. Рассмотренные ниже команды будут работать в Windows 10 / Server 2016 и Windows 8.1/ Server 2012 R2 (в предыдущих версиях Windows придется сначала обновить PowerShell).
В Windows 10 в модуле Storage доступно 160 команд. Чтобы вывести все доступные команды управления дисками, выполните:
Get-Command -Module Storage
Вывод списка дисков и разделов на них
Прежде всего попробуйте вывести список дисков, доступных на логическом уровне в вашей системе. Для этого выполните команду:
Get-Disk | ft -AutoSize
Чтобы выбрать только системный диск, на котором установлена Windows, выполните команду:
Get-Disk | Where-Object IsSystem -eq $True | fl
Как вы видите, команда вернула следующие атрибуты системного диска (их также можно использовать в выборке):
UniqueId : SCSIDISK&VEN_VMWARE&PROD_VIRTUAL_DISK5&1EC51BF7&0&000000:DESKTOP-JOPF9
Number : 0
Path : \?scsi#disk&ven_vmware&prod_virtual_disk#5&1ec51bf7&0&000000#{53f56307-b6bf-11d0-94f2-001efb8b}
Manufacturer : VMware
Model : Virtual disk
SerialNumber :
Size : 80 GB
AllocatedSize : 85898297344
LogicalSectorSize : 512
PhysicalSectorSize : 512
NumberOfPartitions : 2
PartitionStyle : MBR
IsReadOnly : False
IsSystem : True
IsBoot : True
Можно вывести только диски со статусом Offline:
Get-Disk | Where-Object IsOffline –Eq $True| ft –AutoSize
Если вам нужна информация о физических дисках (характеристики и состояние физических дисков на компьютере), используйте командлет Get-PhysicalDisk (ранее мы показывали как с помощью командлета Get-PhysicalDisk можно определить неисправный диск в Storage Spaces Direct и его использование при настройке отказоустойчивого хранилища S2D ).
С помощью PowerShell вы можете определить тип подключенного накопителя SSD или HDD (обычно подключен через шину SATA) или USB флешка (тип UnSpecified).
DeviceId Model MediaType BusType Size ——— —— ——— ——- —- 0 TOSHIBA MK3775VSXP HDD SATA 500156374016 1 Samsung SSD 840 PRO Series SSD SATA 128060514304 2 Transcend UnSpecified USB 128169757184 |
Вы можете вывести список разделов на всех дисках:
Get-Partition
Либо разделы только на указанных дисках:
Get-Partition –DiskNumber 1,2
Чтобы вывести список всех логических разделов в Windows выполните:
Get-Volume
Инициализация диска
В предыдущем примере вы видели, что один из дисков находится в офлайн состоянии и имеет разметку RAW в поле Partition Style. Попробуем инициализировать его, создать таблицу разделов и создать на нем новый раздел.
Прежде всего нужно перевести такой диск в онлайн:
Get-Disk | Where-Object IsOffline –Eq $True | Set-Disk –IsOffline $False
Теперь можно инициализировать этот диск (его индекс 1):
Initialize-Disk -Number 1
По умолчанию на диске создается таблица разделов GPT (GUID), если вам нужна именно MBR, выполните команду:
Initialize-Disk 1 –PartitionStyle MBR
Чтобы не указывать номер диска, можно инициализировать все диски с таблицей разделов RAW:
Get-Disk | Where-Object PartitionStyle –Eq 'RAW' | Initialize-Disk
Создаем разделы на диске
Чтобы создать новый раздел на диске используется командлет New-Partition . Создадим раздел размером 10 Гб и назначим ему букву диска L:
New-Partition –DiskNumber 1 -Size 10gb -DriveLetter L
Если раздел должен занимать все доступное место на диске, используйте атрибут UseMaximumSize . Для автоматического назначения буквы диска используется параметр AssignDriveLetter (иногда буква диска может автоматически на назначаться ).
New-Partition –DiskNumber 1 -AssignDriveLetter –UseMaximumSize
Вы можете изменить назначенную букву диска так:
Set-Partition –DriveLetter L -NewDriveLetter U
Если нужно увеличить имеющийся раздел, сначала выведите доступное пространство для расширения для данного раздела:
Get-PartitionSupportedSize -DriveLetter L | Format-List
Потом можно увеличить размер раздела до максимального:
$MaxSize = (Get-PartitionSupportedSize -DriveLetter L).SizeMax
Resize-Partition -DriveLetter L -Size $MaxSize
Если нужно сделать конкретный раздел активным используется команда:
Set-Partition -DriveLetter T -IsActive $true
Форматирование раздела из PowerShell
Отформатируем полученный раздел в файловой системе NTFS и зададим метку тома DBData:
Format-Volume -DriveLetter L -FileSystem NTFS -NewFileSystemLabel DBData -Confirm:$false
Удаление разделов на диске
Чтобы удалить все разделы на дисках 1 и 2 без подтверждения, выполните команду:
Get-Partition –DiskNumber 1,2 | Remove-Partition -Confirm:$false
Для удаления с дисков всех разделов и полной очистки данных выполните команду:
Clear-Disk -Number 1 -RemoveData -Confirm:$false
Если на диски имеются OEM разделы ( OEM раздел восстановления , EFI раздел , System Reserved ) для их удаления нужно исползовать параметр RemoveOEM:
Clear-Disk -Number 1 -RemoveData –RemoveOEM
Следующая однострочная PowerShell команда инициализирует все новые подключенные диски типа RAW, создаст на них таблицу разделов и создаст раздел с файловой системой NTFS максимального размера. Ее удобно использовать при подключении нового диска:
Get-Disk |Where-Object PartitionStyle -eq 'RAW' |Initialize-Disk -PartitionStyle MBR -PassThru |New-Partition -AssignDriveLetter -UseMaximumSize |Format-Volume -FileSystem NTFS -Confirm:$false