В этой статье мы рассмотрим процесс управления дисками, разделами и томами из командной строки PowerShell. Все операции по работе с локальными дисками и разделами, которые вы привыкли делать с помощью графической консоли «Управление дисками» (
diskmgmt.msc
) или консольной утилиты
diskpart.exe
, можно выполнять из PowerShell. В этой статье мы рассмотрим, как получить информацию о дисках компьютера, инициализировать диск, создать на нем таблицу разделов, новый раздел, отформатировать его и назначить букву диска.
Встроенный модуль Storage (доступен начиная с PowerShell 3.0 и новее) содержит более 170 командлетов для управления дисками. Список доступных команд можно вывести так:
Get-Command -Module Storage
Вывести список дисков и разделов на них
Чтобы получить список дисков компьютера, которые видны 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-PhysicalDisk.
С помощью 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
Если нужно перевести диск в режим только на чтение (будет действовать только на текущем компьютере):
Set-Disk 2 -IsReadOnly 1
Отключить:
Set-Disk 2 -IsReadOnly 0
Чтобы вывести список разделов на всех дисках компьютера:
Get-Partition
Либо можно отобразить разделы только на указанных дисках:
Get-Partition –DiskNumber 1,2
Вывести список всех логических разделов в Windows:
Get-Volume
Инициализация нового диска из PowerShell
В предыдущем примере один из дисков компьютера находился в офлайн состоянии и имеел разметку RAW (в поле Partition Style). Это новый диск чистый диск, который подключили к компьютеру. Чтобы можно было его использовать, его нужно инициализировать, создать таблицу разделов и новый раздел.
Чтобы сделать новый диск доступным операционной системе, его нужно сначала перевести в онлайн:
Get-Disk | Where-Object IsOffline –Eq $True | Set-Disk –IsOffline $False
Теперь можно инициализировать этот диск (его индекс 1):
Initialize-Disk -Number 1
По умолчанию на диске создается таблица разделов GPT (GUID), если вам изменить тип таблицы разделов на MBR, выполните:
Set-Disk 2 -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
Имеющийся на диске раздел можно расширить за счет неиспользуемого места. Сначала нужно вести список свободного места на диске (SizeMax), а затем увеличить размер раздела до максимального:
$MaxSize = (Get-PartitionSupportedSize -DriveLetter L).SizeMax
Resize-Partition -DriveLetter L -Size $MaxSize
Если нужно сделать конкретный раздел активным используется команда:
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
Если нужно перевести определенный раздел в режим ReadOnly:
Set-Partition -DiskNumber 2 -PartitionNumber 2 -IsReadOnly 1
Отформатировать раздел диска из PowerShell
Чтобы отформатировать полученный раздел в файловой системе NTFS и задать ему метку тома DBData, выполните
Format-Volume -DriveLetter L -FileSystem NTFS -NewFileSystemLabel DBData -Confirm:$false
Удаление разделов на диске
Чтобы удалить все разделы на дисках 1 и 2 без подтверждения, выполните команду:
Get-Partition –DiskNumber 1,2 | Remove-Partition -Confirm:$false
Для удаления с диска 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