How to get the drive letter such as "c:", "d:" etc from the PowerShell get-clusterresource cmdlet?

3.6k Views Asked by At

Let's say I have some clustered disks and I can get them out from the cmdlet get-clusterresource.

PS N:\> get-clusterresource | ?{$_.resourcetype.name -eq "Physical Disk"}

Name             State        Group             ResourceType
----             -----        -----             ------------
Cluster Disk 1   Online       Cluster Group     Physical Disk
Cluster Disk 2   Online       SQLServer         Physical Disk
Cluster Disk 3   Online       SQLServer         Physical Disk
Cluster Disk 4   Online       SQLServer         Physical Disk
Cluster Disk 5   Online       SQLServer         Physical Disk
Cluster Disk 6   Online       WINCLUSTER        Physical Disk
Cluster Disk 7   Online       SQLServer         Physical Disk
Cluster Disk 8   Online       SQLServer         Physical Disk
Cluster Disk 9   Online       SQLServer         Physical Disk

How can I get the corresponding drive letters? Those disks may not on the same node.

I've tried to use the get-clusterparameter cmdlet but it does not contain this information.

Thanks.

1

There are 1 best solutions below

0
On

Some quick googling turned up this article which could be adopted like this:

Get-ClusterResource | ? { $_.ResourceType.Name -eq "Physical Disk" } | % {
  $resourceName = $_.Name

  $resource  = gwmi MSCluster_Resource -Namespace root/mscluster |
               ? { $_.Name -eq $resourceName }
  $disk      = gwmi -Namespace root/mscluster -Query `
               "ASSOCIATORS OF {$resource} WHERE ResultClass=MSCluster_Disk"
  $partition = gwmi -Namespace root/mscluster -Query `
               "ASSOCIATORS OF {$disk} WHERE ResultClass=MSCluster_DiskPartition"

  $partition | select Path
}

Or you can do it in a pipeline like this:

$diskqry = 'ASSOCIATORS OF {{{0}}} WHERE ResultClass=MSCluster_Disk'
$partqry = 'ASSOCIATORS OF {{{0}}} WHERE ResultClass=MSCluster_DiskPartition'

Get-ClusterResource | ? { $_.ResourceType.Name -eq 'Physical Disk' } `
  | % { gwmi MSCluster_Resource -Namespace root/mscluster -Filter "Name='$_'" } `
  | % { gwmi -Namespace root/mscluster -Query ($diskqry -f $_) } `
  | % { gwmi -Namespace root/mscluster -Query ($partqry -f $_) } `
  | select Path