Как получить статистику дискового пространства для кластеризованного диска
У меня есть рабочая программа, которая извлекает информацию о диске, такую как FreeSpace, TotalSpace и т. д. с удаленного сервера. Однако у меня есть проблема, что я не могу получить эти статтисты для всех кластеризованных дисков, сопоставленных на сервере. Этот запрос возвращает только информацию для локального диска (логического диска).
Я могу получить размеры дискового пространства, как показано ниже :
<pre>public List<Disk> GetEnvironmentStatistics() { var serverIP = Convert.ToString(System.Web.HttpContext.Current.Session["ServerIP"]); List<Disk> diskinfo = new List<Disk>(); //Add System.Management to access these utilities ConnectionOptions options = new ConnectionOptions { Username = Convert.ToString(System.Web.HttpContext.Current.Session["Username"]), Password = Convert.ToString(System.Web.HttpContext.Current.Session["Password"]), Authority = Convert.ToString(System.Web.HttpContext.Current.Session["Authority"]), }; //root - root of the tree, cimv2 - version ManagementScope scope = new ManagementScope("\\\\" + serverIP + "\\root\\CIMV2", options); scope.Connect(); SelectQuery query = new SelectQuery("Select * from Win32_LogicalDisk"); ManagementObjectSearcher searcher = new ManagementObjectSearcher(scope, query); ManagementObjectCollection queryCollection = searcher.Get(); foreach (ManagementObject mo in queryCollection) { Disk disk = new Disk(); disk.DiskName = mo["Name"].ToString(); disk.DeviceId = mo["DeviceID"].ToString(); disk.SystemName = mo["SystemName"].ToString(); disk.FreeSpace = Convert.ToDecimal(mo["FreeSpace"]); var formattedFreeSpace = Helpers.DiskSpaceInGigabytes(disk.FreeSpace ?? 0); disk.FreeSpace = Decimal.Truncate(formattedFreeSpace); disk.TotalSpace = Convert.ToDecimal(mo["Size"]); var formattedTotalSpace = Helpers.DiskSpaceInGigabytes(disk.TotalSpace ?? 0); disk.TotalSpace = Decimal.Truncate(formattedTotalSpace); disk.UsedSpace = disk.TotalSpace - disk.FreeSpace; var HDPercentageUsed = 100 - (100 * disk.FreeSpace / disk.TotalSpace); disk.PercentageUsed = Convert.ToInt32(HDPercentageUsed); diskinfo.Add(disk); } return diskinfo; }
Я вошел на сервер и отметил, что другие диски отображаются следующим образом: диск кластера
.
Что я уже пробовал:
Как получить информацию о пространстве на кластеризованных дисках с помощью WMI? Есть ли способ указать тип диска в WMI , в данном случае указав, что это кластерный диск, а не локальный диск.. я хотел бы думать, что если я могу указать тип диска, то я также должен быть в состоянии получить информацию для кластерных дисков.
Я уже давно смотрю на это https://www.avianwaves.com/Blog/ArticleID/178/PowerShell-WMI-Free-Disk-Space-from-a-Cluster-Shared-Volume-CSV-in-a-Windows-Failover-Cluster но он не совсем соответствует моим требованиям, а также его Powershell .