On Tuesday I published part 1 where I utilized Get-ClusterParameter and the DiskUniqueIds property to enumerate LUN information for cluster storage, in part 2 I simplified that same approach. In today’s post I am going to continue utilizing the Get-ClusterParameter again looking at the Physical Disk Private Properties however in this post I’ll be looking at the DiskIdGuid property. This property contains the GUID for a physical disk formatted with as GPT. Using this GUID we can match it with VDS and get all of the good information that VDS has about disks.
This method is fully supported by Microsoft and is relatively strait forward.
Step 1: Import the FailoverClusters module into your PowerShell Window Import-Module FailoverClusters Step 2: Get the CSV object your interested in using the Get-ClusterSharedVolume cmdlet $csv = Get-ClusterSharedVolume –Name “MyCSV” Step 3: Get the Cluster Parameters for the CSV object using Get-ClusterParameter $CSVParams = Get-ClusterParameter -InputObject $csv Step 4: Filter to get just the DiskIdGuid ($CSVParams | Where-object -FilterScript {$_.Name -eq "DiskIdGuid"}).Value Ok now you’ve got the GUID for the LUN it will be something like {32443078-9afc-4c0a-b142-466f582a4051}. Step 5: Start diskpart.exe Step 6: Start iterating over disks using select disk <number> and then uniqueid disk until you match the GUID’s. It will look like this:
C:\Users\taylorb>diskpart.exe Microsoft DiskPart version 6.1.7601 Copyright (C) 1999-2008 Microsoft Corporation. On computer: 37-4611K2713G
DISKPART> select disk 1 Disk 1 is now the selected disk.
DISKPART> uniqueid disk Disk ID: {F1B5319E-FF92-40BB-9BC9-D5FFAD0AD66B}
DISKPART> select disk 2 Disk 2 is now the selected disk.
DISKPART> uniqueid disk Disk ID: {32443078-9AFC-4C0A-B142-466F582A4051}
DISKPART> detail disk
IBM 2810XIV Multi-Path Disk Device Disk ID: {32443078-9AFC-4C0A-B142-466F582A4051} Type : FIBRE Status : Reserved Path : 0 Target : 1 LUN ID : 2 Location Path : UNAVAILABLE Current Read-only State : No Read-only : No Boot Disk : No Pagefile Disk : No Hibernation File Disk : No Crashdump Disk : No Clustered Disk : Yes
There are no volumes.
This method utilizes an undocumented and unsupported class I first posted about previously in Using The Virtual Disk Service (VDS) From Powershell to Mount and Use VHD's as well as in Virtual Disk Service (VDS) Powershell Script Version 2 - Previously Created Volume Support + Mount Points + Bug Fixes. Again I must reiterate this is not an officially supported API it has no warrantee – it may break at any time and Microsoft Support can not and will not help you with it. Now that the disclaimer is over – in this example I am using the VDS api’s to do the mapping for me.
PS C:\Users\taylorb>.\GetCSVDevInfo1.ps1
CSV ClusterResourceName: Cluster_CSV1_IBMXIV DiskID: {32443078-9afc-4c0a-b142-466f582a4051} DiskFriendlyName: IBM 2810XIV Multi-Path Disk Device DiskName: \\?\PhysicalDrive2 DiskAddress: Port1Path0Target1Lun2
CSV ClusterResourceName: Cluster_CSV2_IBMXIV DiskID: {ee36e403-75cb-4e23-87b4-e82af7949f4e} DiskFriendlyName: IBM 2810XIV Multi-Path Disk Device DiskName: \\?\PhysicalDrive3 DiskAddress: Port1Path0Target1Lun3
CSV ClusterResourceName: Cluster_CSV3_IBMXIV DiskID: {5db28bcb-6ed3-4b80-b363-861a25cc10e4} DiskFriendlyName: IBM 2810XIV Multi-Path Disk Device DiskName: \\?\PhysicalDrive4 DiskAddress: Port1Path0Target1Lun4
Taylor Brown Hyper-V Enterprise Deployment Team taylorb@microsoft.com http://blogs.msdn.com/taylorb