1) С помощью служебной программы Diskpart с интерфейсом командной строки
Назначение: Windows Xp, Windows Vista, Windows 7, Windows 8, Windows Server 2003, Windows Server 2008, Windows Server 2008 R2, Windows Server 2012
Программа Diskpart позволяет выполнять расширенный набор действий, поддерживаемых оснасткой "Управление дисками". Оснастка "Управление дисками" защищает данные на диске путем блокирования действий, которые могут привести к их повреждению. Будьте внимательны, используя программу Diskpart, поскольку она предоставляет явный контроль над разделами и томами!
Для получение статуса программного массива – воспользуемся командой "list volume":
#Вывод для русской локализации
PS > "list volume" | diskpart
DISKPART> Том ### Имя Метка ФС Тип Размер Состояние Сведения ---------- --- ----------- ----- ---------------- ------- ---------- -------- Том 0 F My RAID Set NTFS RAID-5 4096 МБ Исправен Том 1 G FATSTRIPE FAT32 Чередующийся том 6144 МБ Неисправен Том 2 H My Mirror NTFS Зеркальный том 2048 МБ Исправен Том 3 I My Span NTFS Составной том 9 ГБ Исправен Том 4 D CDFS CD-ROM 0 Б Том 5 C NTFS Раздел 2047 МБ Исправен Системный Том 6 Е NTFS Раздел 2063 МБ Исправен Загрузочный Том 7 J My Primary NTFS Раздел 4095 МБ Исправен Том 8 K My Logical NTFS Раздел 2047 МБ Исправен Том 9 L My Next Log NTFS Раздел 2534 МБ Исправен
#Вывод для английской локализации
DISKPART> Volume ### Ltr Label Fs Type Size Status Info ---------- --- ----------- ----- ---------------- ------- ---------- -------- Volume 0 F My RAID Set NTFS RAID-5 4096 MB Healthy Volume 1 G FATSTRIPE FAT32 Stripe 6144 MB Failed Volume 2 H My Mirror NTFS Mirror 2048 MB Healthy Volume 3 I My Span NTFS Spanned 9 GB Healthy Volume 4 D CDFS CD-ROM 0 B Volume 5 C NTFS Partition 2047 MB Healthy System Volume 6 E NTFS Partition 2063 MB Healthy Boot Volume 7 J My Primary NTFS Partition 4095 MB Healthy Volume 8 K My Logical NTFS Partition 2047 MB Healthy Volume 9 L My Next Log NTFS Partition 2534 MB Healthy
Более подробно — How Basic Disks and Volumes Work
2) Используя VDS (Virtual Disk Services) API
Назначение: Windows Vista, Windows 7, Windows 8, Windows Server 2003, Windows Server 2008, Windows Server 2008 R2, Windows Server 2012
Microsoft Storage VDS Library — позволяет получить статус программного массива. Но данная библиотека является недокументированной и неподдерживаемой, хотя и поставляется вместе с ОС. Так что используем на свой страх и риск.
- Для работы с библиотекой требуются права Администратора
- При использовании Windows 7,Windows Vista – требуется установить Remote Server Administration Tools (RSAT) и компонент из набора Share and Storage Management Tools
- Для загрузки сборки используйте статический метод LoadWithPartialName класса System.Reflection.Assembly , вместо командлета Add-Type с параметром –AssemblyName
Перечисления:
- VDS_VOLUME_STATUS – статус тома
- VDS_VS_UNKNOWN
The status of the volume is unknown. This value does not apply to dynamic volumes.
- VDS_VS_ONLINE
The volume is available.
- VDS_VS_NO_MEDIA
The volume is removable media, such as a CD-ROM.
- VDS_VS_FAILED
The volume is unavailable.
- VDS_VS_OFFLINE
The volume is offline.
- VDS_VOLUME_TYPE – тип тома
- VDS_VT_UNKNOWN
The volume type is unknown.
- VDS_VT_SIMPLE
The volume type is simple—it is composed of extents from exactly one disk.
- VDS_VT_SPAN
The volume type is spanned—it is composed of extents from more than one disk.
- VDS_VT_STRIPE
The volume type is striped, which is equivalent to RAID 0.
- VDS_VT_MIRROR
The volume type is mirrored, which is equivalent to RAID 1.
- VDS_VT_PARITY
The volume type is striped with parity, which accounts for RAID levels 3, 4, 5, and 6.
- VDS_HEALTH – здоровье тома
# Загрузка сборки Microsoft Storage VDS Library [Reflection.Assembly]::LoadWithPartialName("Microsoft.Storage.Vds") | Out-Null $VdsServiceLoader = New-Object Microsoft.Storage.Vds.ServiceLoader $VdsService = $VdsServiceLoader.LoadService($null) $VdsService.WaitForServiceReady() # Получим коллекцию томов присутствующих в системе $volumes = $VdsService.Providers | foreach {$_.packs} | foreach {$_.volumes} # Выведем свойства Буква диска,тип,статус,"здоровье" $volumes | Select DriveLetter,Type,Status,Health
Пример вывода:
Windows PowerShell Copyright (C) 2012 Microsoft Corporation. All rights reserved. PS >.\GetVolumeStatus.ps1 DriveLetter Type Status Health G Mirror Online Healthy E Span Online Healthy F Stripe Online Healthy D Simple Online Healthy C Simple Online Healthy
|
3) Используя командлет Get-Volume из модуля Storage
Назначение: Windows 8, Windows Server 2012
В Windows 8,Windows Server 2012 появился новый WMI класс MSFT_Volume. Комадлет Get-Volume является обвязкой для этого класса. Есть один существенный минус – нет возможности определить тип тома.
Требования:
- Minimum supported client — Windows 8 [desktop apps only]
- Minimum supported server — Windows Server 2012 [desktop apps only]
- Namespace — \\.\Root\Microsoft\Windows\Storage
- MOF — Storagewmi.mof
Пример вывода:
Windows PowerShell Copyright (C) 2012 Microsoft Corporation. All rights reserved. PS > Get-Volume | Format-Table -AutoSize DriveLetter,HealthStatus DriveLetter HealthStatus Healthy C Healthy E Healthy F Healthy Healthy D Healthy
|
PS. ИМХО самое простое и эффективное средство – является DiskPart