В Windows 10 в модуле Storage доступно 160 команд. Чтобы вывести все доступные команды управления дисками, выполните:

PS c:\> Get-Command -Module Storage

Важно. При работе с дисками и разделами на них из PowerShell нужно быть внимательным, чтобы случайно не удалить или отформатировать раздел с данными.

1. Вывод списка дисков и разделов на них.

1.1. Прежде всего попробуйте вывести список дисков, доступных на логическом уровне в вашей системе. Для этого выполните команду:

PS c:\> Get-Disk | ft -AutoSize

1.2. Чтобы выбрать только системный диск, на котором установлена Windows, выполните команду:

PS c:\> Get-Disk | Where-Object IsSystem -eq $True | fl

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

UniqueId : SCSI\DISK&VEN_VMWARE&PROD_VIRTUAL_DISK\5&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

1.3. Можно вывести только диски со статусом Offline:

PS c:\> Get-Disk | Where-Object IsOffline –Eq $True| ft –AutoSize

1.4. Если вам нужна информация о физических дисках (характеристики и состояние физических дисков на компьютере), используйте командлет Get-PhysicalDisk.

С помощью PowerShell вы можете определить тип подключенного накопителя SSD или HDD (обычно подключен через шину SATA) или USB-флешка (тип UnSpecified).

PS c:\> Get-PhysicalDisk | select DeviceId, Model, MediaType, BusType, Size | Format-Table

На выходе получим:

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

1.5. Вы можете вывести список разделов на всех дисках:

PS c:\> Get-Partition

1.6. Либо разделы только на указанных дисках:

PS c:\> Get-Partition –DiskNumber 1,2

1.7. Чтобы вывести список всех логических разделов в Windows выполните:

PS c:\> Get-Volume

Обратите внимание, что нумерация дисков начинается с 0, а нумерация разделов с 1.

2. Инициализация диска.

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

2.1. Прежде всего нужно перевести такой диск в онлайн:

PS c:\> Get-Disk | Where-Object IsOffline –Eq $True | Set-Disk –IsOffline $False

2.2. Теперь можно инициализировать этот диск (его индекс 1):

PS c:\> Initialize-Disk -Number 1

2.3. По умолчанию на диске создается таблица разделов GPT (GUID), если вам нужна именно MBR, выполните команду:

PS c:\> Initialize-Disk 1 –PartitionStyle MBR

Если на диске уже имеются данные, вы можете изменить таблицу разделов с MBR в GPT без удаления данных с помощью утилиты mbr2gpt.exe.

2.4. Чтобы не указывать номер диска, можно инициализировать все диски с таблицей разделов RAW:

PS c:\> Get-Disk | Where-Object PartitionStyle –Eq 'RAW' | Initialize-Disk

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

3. Создаем разделы на диске.

Чтобы создать новый раздел на диске используется командлет New-Partition.

3.1. Создадим раздел размером 10 Гб и назначим ему букву диска L:

PS c:\> New-Partition –DiskNumber 1 -Size 10gb -DriveLetter L

3.2. Если раздел должен занимать все доступное место на диске, используйте атрибут UseMaximumSize. Для автоматического назначения буквы диска используется параметр AssignDriveLetter (иногда буква диска может автоматически не назначаться).

PS c:\> New-Partition –DiskNumber 1 -AssignDriveLetter –UseMaximumSize

3.3. Вы можете изменить назначенную букву диска так:

PS c:\> Set-Partition –DriveLetter L -NewDriveLetter U

3.4. Если нужно увеличить имеющийся раздел, сначала выведите доступное пространство для расширения для данного раздела:

PS c:\> Get-PartitionSupportedSize -DriveLetter L | Format-List

3.5. Потом можно увеличить размер раздела до максимального:

PS c:\> $MaxSize = (Get-PartitionSupportedSize -DriveLetter L).SizeMax
PC c:\> Resize-Partition -DriveLetter L -Size $MaxSize

3.6. Если нужно сделать конкретный раздел активным используется команда:

PS c:\> Set-Partition -DriveLetter T -IsActive $true

4. Форматирование раздела из PowerShell.

4.1. Отформатируем полученный раздел в файловой системе NTFS и зададим метку тома DBData:

PS c:\> Format-Volume -DriveLetter L -FileSystem NTFS -NewFileSystemLabel DBData -Confirm:$false

5. Удаление разделов на диске.

5.1. Чтобы удалить все разделы на дисках 1 и 2 без подтверждения, выполните команду:

PS c:\> Get-Partition –DiskNumber 1,2 | Remove-Partition -Confirm:$false

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

PS c:\> Clear-Disk -Number 1 -RemoveData -Confirm:$false

5.3. Если на диски имеются OEM разделы (OEM раздел восстановления, EFI раздел , System Reserved) для их удаления нужно исползовать параметр RemoveOEM:

PS c:\> Clear-Disk -Number 1 -RemoveData –RemoveOEM

5.4. Следующая однострочная PowerShell команда инициализирует все новые подключенные диски типа RAW, создаст на них таблицу разделов и создаст раздел с файловой системой NTFS максимального размера. Ее удобно использовать при подключении нового диска:

PS c:\> Get-Disk |Where-Object PartitionStyle -eq 'RAW' |Initialize-Disk -PartitionStyle MBR -PassThru |New-Partition -AssignDriveLetter -UseMaximumSize |Format-Volume -FileSystem NTFS -Confirm:$false