Как получить букву диска, такую как "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