sergey vasin

The IT blog

Используем PowerShell для сопоставления дисков и разделов – Hey, Scripting Guy! Blog

leave a comment »

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

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

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

Заметка: Для дополнительной информации о классах CIM, ознакомьтесь с постом «Используем CIM-командлеты PowerShell для определения WMI-ассоциаций».

Для решения этой задачи существует и сценарий на VBScript — How Can I Correlate Logical Drives and Physical Disks? Он содержит достаточно много кода, и я выражаю всяческое уважение моим предшественникам. Вы также можете ознакомиться с постом History of the Scripting Guys, чтобы больше узнать о FAB FOUR (five)!

Сопоставляем диски и разделы

Первое, что нужно сделать при работе с ассоциативными классами – это выяснить, какие классы они связывают. Для этого можно воспользоваться командлетом Get-CimClass и передать полученные результаты командлету Select-Object. Нам нужно получить содержимое свойства CimClassProperies.

16:49 C:\> Get-CimClass win32_diskdriveToDiskPartition | select -exp cimclassproperties

Name               : Antecedent

Value              :

CimType            : Reference

Flags              : Property, Key, ReadOnly, NullValue

Qualifiers         : {read, key, MappingStrings, Override}

ReferenceClassName : Win32_DiskDrive

 

Name               : Dependent

Value              :

CimType            : Reference

Flags              : Property, Key, ReadOnly, NullValue

Qualifiers         : {read, key, MappingStrings, Override}

ReferenceClassName : Win32_DiskPartition

Нужная мне информация содержится в свойстве ReferenceClassName. Как я покажу чуть ниже, эта информация представляет ценность и с точки зрения траблшутинга. Я хочу сказать, что для того чтобы использовать это правильным образом, я должен знать, чем именно я пользуюсь.

Сначала я подумал, что могу использовать командлет Get-Disk и передать его результаты командлету Get-CimAssociatedInstance, но как выяснилось, это не работает.

17:10 C:\> get-disk | Get-CimAssociatedInstance -Association win32_DiskDriveToDiskpartition

Не возвращается ни сообщений об ошибках, ни каких-либо данных. Я решил проверить, какой объект возвращается командлетом Get-Disk. Сначала я использовал метод GetType.

17:13 C:\> (get-disk).GetType()

IsPublic IsSerial Name                                     BaseType

——— ——— —-                                     ———

True     True     CimInstance                              System.Object

Он не выдал мне какой-либо ценной информации. Затем я воспользовался командлетом Get-Member.

17:13 C:\> (get-disk | get-member).typename[0]

Microsoft.Management.Infrastructure.CimInstance#ROOT/Microsoft/Windows/Storage/MSFT_Disk

Как видно, функция Get-Disk возвращает класс MSFT_Disk, а не экземпляр класса Win32_DiskDrive. Похоже, нам придется действовать по-старинке. Я воспользуюсь командлетом Get-CimInstance для получения экземпляра класса Win32_DiskDrive. Затем я передам результаты командлету Get-CimAssociatedInstance и укажу ассоциативный класс Win32_DiskDriveToDiskPartition. Команда и ее вывод приведены ниже.

17:18 C:\> Get-CimInstance win32_diskdrive | Get-CimAssociatedInstance -Association win32_diskdriveToDiskPartition

Name             NumberOfBlocks BootPartition PrimaryPartition Size         Index

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

Disk #0, Part… 716800        True          True          367001600    0

Disk #0, Part… 311859200     False         True          159671910400 1

 Это все, что касается использования Windows PowerShell, WMI и CIM для сопоставления дисков и разделов.

Автор:

Ed Wilson, Microsoft Scripting Guy

Оригинал:

http://blogs.technet.com/b/heyscriptingguy/archive/2012/12/17/use-powershell-to-map-disk-drives-and-partitions.aspx


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

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


Реклама

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

Декабрь 29, 2012 в 14:01

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

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

Логотип WordPress.com

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

Фотография Twitter

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

Фотография Facebook

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

Google+ photo

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

Connecting to %s