Управління дисками і розділами з PowerShell

У цій статті ми розглянемо процес управління дисками, розділами і томами з командного рядка PowerShell. Всі операції по роботі з локальними дисками і розділами, які ви звикли виконувати за допомогою графічної консолі "Управління дисками" (diskmgmt.msc) або з командного рядка утиліти diskpart.exe, ви можете виконати з PowerShell. Командлети управління дисками включені в модуль Storage, доступний в PowerShell 3.0. Ми подивимося як форматувати диск, створити на ньому таблицю розділів, розділ і відформатувати його. Розглянуті нижче команди будуть працювати в Windows 10 / Server 2016 і Windows 8.1 / Server 2012 R2 (в попередніх версіях Windows доведеться спочатку оновити PowerShell).

зміст:

  • Виведення списку дисків і розділів на них
  • ініціалізація диска
  • Створюємо розділи на диску
  • Форматування розділу з PowerShell
  • Видалення розділів на диску

У Windows 10 в модулі Storage є 160 команд. Щоб вивести всі доступні команди управління дисками, виконайте:

Get-Command -Module Storage

важливо. При роботі з дисками і розділами на них з PowerShell потрібно бути уважним, щоб випадково не видалити або відформатувати розділ з даними.

Виведення списку дисків і розділів на них

Перш за все спробуйте вивести список дисків, доступних на логічному рівні у вашій системі. Для цього виконайте команду:

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

Можна вивести тільки диски зі статусом 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

Зверніть увагу, що нумерація дисків починається з 0, а нумерація розділів з 1.

ініціалізація диска

У попередньому прикладі ви бачили, що один з дисків знаходиться в офлайн стані і має розмітку 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

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

Щоб не вказувати номер диска, можна ініціалізувати всі диски з таблицею розділів RAW:

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

Зверніть увагу, що диск може знаходиться в статусі RAW при пошкодженні таблиці розділів. Ви можете спробувати відновити таблицю розділів і дані на RAW диску так.

Створюємо розділи на диску

Щоб створити новий розділ на диску використовується командлет 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