Как получить букву диска, такую ​​как "c:", "d:" и т. Д., Из командлета PowerShell get-clusterresource?

Допустим, у меня есть несколько кластерных дисков, и я могу получить их из командлета 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

Как я могу получить соответствующие буквы диска? Эти диски могут не на одном узле.

Я пытался использовать командлет get-clusterparameter, но он не содержит эту информацию.

Благодарю.

1 ответ

Некоторый быстрый поиск в Google нашел эту статью, которая может быть принята следующим образом:

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
}

Или вы можете сделать это в конвейере следующим образом:

$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
Другие вопросы по тегам