Управление дисками и разделами из PowerShell

В этой статье мы рассмотрим процесс управления дисками, разделами и томами из командной строки PowerShell. Все операции по работе с локальными дисками и разделами, которые вы привыкли делать с помощью графической консоли «Управление дисками» ( diskmgmt.msc ) или консольной утилиты diskpart.exe , можно выполнять из PowerShell. В этой статье мы рассмотрим, как получить информацию о дисках компьютера, инициализировать диск, создать на нем таблицу разделов, новый раздел, отформатировать его и назначить букву диска.

Встроенный модуль Storage (доступен начиная с PowerShell 3.0 и новее) содержит более 170 командлетов для управления дисками. Список доступных команд можно вывести так:

Get-Command -Module Storage

powershell модуль storage для управления дисками и разделами

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

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

Чтобы получить список дисков компьютера, которые видны Windows на логическом уровне, выполните:

Get-Disk | ft -AutoSize

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

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

Вывести только имя диска, серийный номер, модель и версию прошивки:

Get-Disk | Select-Object -Property FriendlyName,SerialNumber,Model,FirmwareVersion

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

Get-Disk | Where-Object IsOffline –Eq $True| ft –AutoSize

просмотр списка дисков Get-Disk

Для вывода информации о параметрах и состоянии физических локальных дисков компьютер используется командлет Get-PhysicalDisk.

Get-PhysicalDisk подключенные физические диски и их состояние

Ранее мы показывали как используется команда Get-PhysicalDisk настройке отказоустойчивого хранилища S2D или поиске неисправного диск в Storage Spaces Direct и его использование при).

С помощью PowerShell можно определить является ли накопитель SSD или HDD , или это или 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

Например, вывести все подключенные USB накопители:

Get-Disk | Where-Object -Property BusType -eq USB

Также можно получить информацию о здоровье диска (HealthStatus) и значениях SMART атрибутов дисков.

Get-PhysicalDisk | Get-StorageReliabilityCounter | Select-Object DeviceId, Temperature, PowerOnHours, LoadUnloadCycleCount, ReadErrorsTotal, WriteErrorsTotal | Format-Table -AutoSize

Get-PhysicalDisk вывести информацию о здоровье диска по атрибутам SMART

Если нужно перевести диск в режим только на чтение (будет действовать только на текущем компьютере):

Set-Disk 2 -IsReadOnly 1

Отключить:

Set-Disk 2 -IsReadOnly 0

Чтобы вывести список разделов на всех дисках компьютера:

Get-Partition

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

Get-Partition –DiskNumber 1,2

Вывести список всех логических разделов в Windows:

Get-Volume

Get-Volume

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

Инициализация нового диска из PowerShell

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

Чтобы сделать новый диск доступным операционной системе, его нужно сначала перевести в онлайн:

Get-Disk | Where-Object IsOffline –Eq $True | Set-Disk –IsOffline $False

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

Initialize-Disk -Number 1

инифиализация диска из powershell

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

Set-Disk 2 -PartitionStyle MBR

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

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

Get-Disk | Where-Object PartitionStyle –Eq 'RAW' | Initialize-Disk

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

Создать разделы на диске

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

New-Partition –DiskNumber 1 -Size 10gb -DriveLetter L

Создать раздел на диске New-Partition

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

New-Partition –DiskNumber 1 -AssignDriveLetter –UseMaximumSize

Если нужно изменить назначенную разделу букву диска, выполните:

Set-Partition –DriveLetter L -NewDriveLetter U

Имеющийся на диске раздел можно расширить за счет неиспользуемого места. Сначала нужно вести список свободного места на диске (SizeMax), а затем увеличить размер раздела до максимального:

$MaxSize = (Get-PartitionSupportedSize -DriveLetter L).SizeMax
Resize-Partition -DriveLetter L -Size $MaxSize

Расширение раздела жесткого диска Resize-Partition

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

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

Set-Partition -DriveLetter L -IsActive $true

Вывести информацию о занятом и свободном месте на логических томах:

Get-CimInstance -Class Win32_LogicalDisk |
Select-Object -Property DeviceID, VolumeName, @{Label='FreeSpace (Gb)'; expression={($_.FreeSpace/1GB).ToString('F2')}},
@{Label='Total (Gb)'; expression={($_.Size/1GB).ToString('F2')}},
@{label='FreePercent'; expression={[Math]::Round(($_.freespace / $_.size) * 100, 2)}}|ft

powershell: информация о занаятом/сводобном месте на разделах

Если нужно перевести определенный раздел в режим ReadOnly:

Set-Partition -DiskNumber 2 -PartitionNumber 2 -IsReadOnly 1

Отформатировать раздел диска из PowerShell

Чтобы отформатировать полученный раздел в файловой системе NTFS и задать ему метку тома DBData, выполните

Format-Volume -DriveLetter L -FileSystem NTFS -NewFileSystemLabel DBData -Confirm:$false

отформатировать раздел на диске Format-Volume

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

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

Get-Partition –DiskNumber 1,2 | Remove-Partition -Confirm:$false

Удалить раздел Remove-Partition

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

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

Такой PowerShell скрипт удобно использовать для быстрой инициализации диска и создания разделов из командной строки на Windows Server Core, на котором отсутствует графический интерфейс.

Предыдущая статья Следующая статья


Комментариев: 0 Оставить комментарий

Оставить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Я не робот( Обязательно отметьте)