sergey vasin

The IT blog

Weekend Scripter: Простой способ управления дисками – Hey, Scripting Guy! Blog

leave a comment »

Резюме: Microsoft Scripting Guy, Ed Wilson рассказывает об управлении дисками на ноутбуке с Windows 8 посредством Windows PowerShell.

Проверка статуса дисков при помощи Windows PowerShell

В течение нашего тура по Европе я использую внешний жесткий диск для хранения всех сделанных фотографий. Моя камера сохраняет снимки в форматах RAW и JPEG, так что каждый снимок занимает примерно в два раза больше места. Жесткий диск моего ноутбука не такой большой, поэтому я подумал что внешний диск будет идеальным решением.

И мой ноутбук, и жесткий диск поддерживают USB 3.0, так что со скоростью все в порядке. Однако, существует одна проблема – внешние диски, такие как флеш-накопитель отображаются в системе как съемные диски. Диски же большого размера отображаются как фиксированные (fixed), поэтому мне приходится запускать Disk Manager для того чтобы подключить или отключить диск. Если не отключить диск перед выключением компьютера, то при следующей загрузке он будет вечно искать отсутствующий диск. Использование Disk Manager занимает некоторое время и состоит из следующих шагов:

1.       Переходим в экран Start.

2.       Выбираем Administrative Tools.

3.       Запускаем консоль Computer Management

4.       Находим секцию Storage и выбираем Disk Management

5.       Щелкаем правой кнопкой мыши по отключенному диску

6.       Подключаем диск

Конечно существует более простой способ запуска оснастки Disk Management– нужно просто набрать diskmgmt в консоли Windows PowerShell. Естественно, нужно знать о том, что оснастка Disk Management называется diskmgmt.

 01

Но самый быстрый способ проверки состояния дисков – это использование функции (командлета) Get-Disk в Windows 8 (а также в Windows Server 2012). Мне нужно всего лишь набрать Get-Disk и в консоли Windows PowerShell появится список дисков. Это показано ниже (мой внешний диск еще не подключен).

PS C:\> Get-Disk

Number Friendly Name  Operational Status  Total Size Partition Style

—— ————-                            ————  ———- ————

0      INTEL SSDSA2BW160G3L      Online       149.05 GB MBR

Заметка: Использование функции Get-Disk требует административных прав. Если вы запустите ее с правами обычного пользователя, появится загадочная надпись “Access to a CIM resource was not available to the client».

Когда я подключаю внешний диск и запускаю команду еще раз, я вижу что он находится в состоянии offline.

PS C:\> Get-Disk

Number Friendly Name  Operational Status  Total Size Partition Style

—— ————-                            ————  ———- ————

0      INTEL SSDSA2BW160G3L                     Online         149.05 GB MBR

1      SAMSUNG HN-M101MBB USB Device            Offline        931.51 GB MBR

Подключаем все oflline-диски

Подключить все диски в состоянии offline довольно просто. Для начала нужно получить список дисков при помощи функции Get-Disk и передать результаты командлету Where-Object для фильтрации по свойству isoffline. Для того, чтобы убедиться, что все происходит правильно, я сначала запущу только эти команды.

Заметка: Я использовал новый синтаксис для команды Where-Object, доступный только в WindowsPowerShell 3.0. Кстати «?» — это алиас для командлета Where-Object, и он существует со времен WindowsPowerShell 1.0.

PS C:\> Get-Disk | ? isoffline

Number Friendly Name  Operational Status  Total Size Partition Style

—— ————-                            ————  ———- ————

1      SAMSUNG HN-M101MBB USB Device            Offline        931.51 GB MBR

Отлично! Теперь мне нужно вернуть эту команду, передать ее результаты функции Set-Disk и указать, что я хочу изменить значение свойства IsOffline на False, для того чтобы перевести диск в состояние Online.

Get-Disk | ? IsOffline | Set-Disk -IsOffline:$false

После запуска команды новый диск подключается и открывается окно Проводника, показывающее содержимое диска, поэтому я могу сказать, что команда отработала правильно. Но если я хочу быть полностью уверенным в этом, я всегда могу запустить функцию Get-Disk еще раз.

PS C:\> Get-Disk

Number Friendly Name  Operational Status  Total Size Partition Style

—— ————-                            ————  ———- ————

0      INTEL SSDSA2BW160G3L                     Online         149.05 GB MBR

1      SAMSUNG HN-M101MBB USB Device            Online         931.51 GB MBR

Все вроде бы неплохо. Но я хочу посмотреть всю информацию о новом диске. Поэтому я передаю результаты командлету Format-List (fl– его алиас).

 02

Попытка записи на диск только для чтения

По какой-то причине, когда я сделал это в первый раз, дик подключился в режиме только для чтения (read-only). Когда я попытался сбросить фотографии с моей камеры, естественно у меня ничего не получилось. В итоге я понял в чем причина. Интересная вещь, касающаяся функции Set-Disk состоит в том, что она обладает 4 наборами параметров для подключения или отключения диска. Эти наборы параметров приведены здесь.

Set-Disk [-Number] [-AsJob []] [-CimSession

] [-IsOffline ] [-ThrottleLimit ]

[]

Set-Disk [-AsJob []] [-CimSession ] [-IsOffline

] [-ThrottleLimit ] -Path []

Set-Disk [-AsJob []] [-CimSession ] [-IsOffline

] [-ThrottleLimit ] -UniqueId []

Set-Disk [-AsJob []] [-CimSession ] [-IsOffline

] [-ThrottleLimit ] -InputObject

[]

И еще 4 набора параметров позволяют изменять состояние диска на readonly или read/write.

Set-Disk [-Number] [-AsJob []] [-CimSession

] [-Guid ] [-IsReadOnly ] [-Signature ]

[-ThrottleLimit ] []

Set-Disk [-AsJob []] [-CimSession ] [-Guid

] [-IsReadOnly ] [-Signature ] [-ThrottleLimit

] -Path []

Set-Disk [-AsJob []] [-CimSession ] [-Guid

] [-IsReadOnly ] [-Signature ] [-ThrottleLimit

] -UniqueId []

Set-Disk [-AsJob []] [-CimSession ] [-Guid

] [-IsReadOnly ] [-Signature ] [-ThrottleLimit

] -InputObject []

К сожалению, здесь нет набора параметров, который позволяет одновременно подключить диск и указать, что он должен быть доступен для записи. Таким образом, если диск подключается в режиме только для чтения, мне нужно использовать функцию Set-Disk во второй раз, чтобы перевести его в состояние read/write.

Get-Disk -FriendlyName *usb* | Set-Disk -IsReadOnly:$false

Естественно, я могу скомбинировать эти две команды, когда подключаю диск.

Get-Disk | ? IsOffline | Set-Disk -IsOffline:$false

Get-Disk | ? IsReadOnly | Set-Disk -IsReadOnly:$false

Когда я закончу скидывать фотографии на диск, мне нужно будет его отключить – я запущу следующую команду:

Get-Disk -FriendlyName *usb* | Set-Disk -IsOffline:$true

Автор:

Ed Wilson, Microsoft Scripting Guy

Оригинал:

http://blogs.technet.com/b/heyscriptingguy/archive/2012/11/25/weekend-scripter-the-easy-way-to-manage-disk-drives.aspx


Страницы в социальных сетях:

Twitter: https://twitter.com/vsseth
Facebook: https://fb.com/inpowershell
VKontakte: https://vk.com/inpowershell


Реклама

Written by Сергей Васин

Декабрь 5, 2012 в 08:55

Опубликовано в HeyScriptingGuyBlog, PowerShell

Tagged with

Добавить комментарий

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход / Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход / Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход / Изменить )

Google+ photo

Для комментария используется ваша учётная запись Google+. Выход / Изменить )

Connecting to %s