В последнее время в рубрике речь у нас шла о средствах PowerShell для Active Directory (AD). Однако на этот раз мы сделаем перерыв и поговорим о некоторых замечательных командах PowerShell – volume, disk и physicaldisk. Их основным достоинством является то, что они позволяют экономить время. Эти команды, впрочем, доступны только для пользователей Windows 8 и Windows Server 2012. Если вы относитесь к их числу, то не упускайте такую возможность. Ниже я привожу краткое описание этих трех команд.

Get-Volume: Windows Explorer больше не нужен

Как минимум, один раз в день мне требуется узнать, какие буквы диска свободны, а какие уже используются в системе. Для этого я всегда пользовался Windows Explorer, либо открывал Diskpart и вводил запрос list volume (сокращенный вариант – lis vol). Однако для Explorer нужна мышь, а Diskpart запускается долго, что замедляет работу. Для сравнения, если заранее открыть окно командной строки PowerShell, где мне в любом случае приходится выполнять большую часть работы, то достаточно ввести запрос

get-volume,

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

Set-Partition: переименование дисков без применения Diskpart

У Get-volume есть родственная команда set-partition, которая тоже очень полезна. Обычно текущие используемые буквы диска нужно знать, если требуется изменить букву какого-либо раздела. Например, в моей системе рабочая станция VMware не может нормально работать, если виртуальные машины находятся не в папке VMs на диске E, который обычно находится на втором физическом диске. Однако поскольку я использую различные комбинации устройств хранения, присоединяемых в разное время, раздел, где находятся виртуальные машины, не всегда оказывается диском E. Данную проблему можно решить с помощью mklink, но это опять-таки тема для другой статьи. Таким образом, время от времени моим первым пунктом повестки дня является проблема диска E.

Мне нередко приходится обнаруживать папку VMs, скажем, на диске G, а какое-либо другое устройство (например, USB-накопитель) – на диске E. Исправить это нетрудно (назначить USB-накопителю другую букву – например, V, чтобы высвободить букву E, а затем поменять G на E). При этом на переименование раздела тратится время, поскольку приходится запускать диспетчер дисков или, что еще хуже, Diskpart.

Поймите меня правильно: я очень ценю Diskpart. Без этой утилиты мне бы не удалось скомпоновать бесплатную замену для SteadyState от Microsoft (которую я назвал SteadierState) в виде нескольких пакетных файлов. Однако выполнение любой задачи с использованием Diskpart похоже на построение мнемонической схемы с помощью каменных ножей и медвежьих шкур. Ее своеобразный синтаксис затрудняет составление сценариев и заставляет вспомнить о Netsh (еще одна мощная программа, которую никто не использует, потому что в ней трудно разобраться) с причудливым интерфейсом командной строки Cisco IOS.

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

set-partition -driveletter E -newdriveletter V
set-partition -driveletter G -newdriveletter E

Если у вас уже открыто окно командной строки PowerShell, и вы не забываете использовать заполнение нажатием клавиши Tab, то ввод этих трех команд (напоминаю, что прежде необходимо выполнить запрос get-volume) занимает гораздо меньше времени, чем открытие диспетчера дисков, даже с помощью комбинации клавиш Windows + X, которая предусмотрена в Windows 8 и Windows Server 2012.

Get-Disk: еще одна замена для Diskpart

Многие задачи управления хранилищами требуют знания не только буквы, но и номера диска. Да, большинство из нас говорят «мы установили новый диск» и «данные на диске G», тогда как в первой фразе речь идет о физическом устройстве, а во втором – о логическом разделе. Это имеет место даже в PowerShell, что видно по параметрам –driveletter и -newdriveletter. Однако у PowerShell есть еще одна команда, о которой стоит знать тем, кто работает с хранилищами и хочет избежать применения диспетчера дисков или Diskpart:

get-disk

Эта команда позволяет вывести список (главным образом) физических устройств и их номеров диска – еще одним поводом меньше для обращения к Diskpart.