Заметки о Windows и других программных продуктах Microsoft...

Командлеты PowerShell для работы с дисками

Командлеты PowerShell для работы с дисками

Обычно для работы с дисками я использую оснастку управления дисками (Disk management) или утилиту Diskpart. А недавно решил проверить, нет ли в PowerShell каких либо средств для работы с дисками. Оказалось, что есть. В PowerShell (начиная с третьей версии) входит модуль Storage, предназначенный как раз для управления дисковыми устройствами.

В него входит больше сотни командлетов, вывести их список можно командой:

Get-Command -Module Storage

Рассмотрим некоторые наиболее употребимые команды. Для примера предположим, что я подключил новый диск и мне необходимо его подготовить — инициализировать, разбить на разделы, отформатировать и т.д.

Первым делом выведем список всех дисков в системе командой:

Get-Disk

Новый диск можно узнать по значению RAW в поле Partition Stylle. Инициализируем его:

Initialize-Disk -Number 1 -PartitionStyle GPT

Затем создадим раздел размером 40Гб и дадим ему букву диска X:

New-Partition -DiskNumber 1 -Size 40GB -DriveLetter X

Отформатируем полученный раздел в NTFS и укажем для него метку тома:

Format-Volume -DriveLetter X -FileSystem NTFS -NewFileSystemLabel Disk2 -Confirm:$false

создание раздела в PowerShell

 

Теперь предположим, я промахнулся с размером раздела и его надо увеличить. Посмотреть доступный размер для раздела можно командой:

Get-PartitionSupportedSize -DriveLetter X | Format-List

Увеличим раздел до максимально возможного:

$size = (Get-PartitionSupportedSize -DriveLetter X).SizeMax
Resize-Partition -DriveLetter X -Size $size

И до кучи сменим букву диска:

Set-Partition -DriveLetter X -NewDriveLetter Y

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

 

И наконец мне понадобилось вернуть диск в первоначальное состояние. Для очистки диска воспользуемся командой, которая удалит все данные и информацию о разделах:

Clear-Disk -Number 1 -RemoveData -Confirm:$false

И снова получим чистый,  не разбитый диск.

очистка диска в PowerShell

 

И еще, все командлеты имеют параметр CimSession, позволяющий выполнять операции с дисками на удаленных компьютерах, например:

$session = New-CimSession -ComputerName SRV1 -Credential Contoso\Administrator
Get-Disk -Cimsession $session

удаленное управление дисками в PowerShell

Напомню, что по умолчанию модуль Storage есть только в Windows 8\Server 2012 и выше, для более старых ОС придется устанавливать PowerShell v3 отдельно. Более подробную информацию о командлетах для работы с дисками можно посмотреть на TechNet, либо воспользовавшись встроенной справкой PowerShell.

 
 
Комментарии
Алексей

Спасибо за статью!
У меня Windows Server 2008 R2 Standart. PowerShell версии 3.0. Ни одна команда не работает.

Возможно его надо сначала импортировать — Import-Module Storage

Алексей

Не помогает. Ругается на импорт, мол, такого модуля нет.

Проверил — независимо от версии PS модуль Storage есть только на Windows 8\Server 2012 и выше. Для всего остального по прежнему diskpart 🙂

Алексей

Все равно спасибо! 🙂

AlE͕̬̦̥͎̟̯ͪ̓̇͊̋̍̚X

День добрый. А есть возможность присваивать букву томам в зависимости от описания (названия) тома?

При создании тома — присваиваем букву и добавляем метку (описание) тома. Вы хотите наоборот — сначала назначить метку тома, а потом согласно этой метке выбрать букву?

У меня при добавлении нового диска он не в сети. В столбце OperationalStatus имеет значение offline. Через compmgmt.msc — управление дисками, можно сделать в сети и дальше все ок. Но хотелось бы командой. Это возможно?

При инициализации диска командой Initialize-Disk он вроде как переводится в Online. Еще можно так:
Set-Disk -Number 1 -IsOffline $False