[英]Is there a way to get the free space on an iSCSI drive mounted as a NTFS folder
我有一堆作為NFSAN文件夾安裝的iSCSI驅動器( 作為NFTS文件夾 ,以避免耗盡所有驅動器號),我想獲得有關其可用空間的信息。 根本原因是當空間低於特定閾值時發出警告,這是計划任務的一部分,該任務還會執行其他一系列檢查。
有沒有辦法做到這一點,最好使用C#(通過WMI,P / Invoke或其他方法)? 當然,任何腳本解決方案也都很棒,因為無論如何我都可以調用它(PowerShell)? 我首先嘗試了樂觀路線,使用的DriveInfo
使用此類路徑進行了初始化,但它只是返回有關根卷而不是裝載的信息。 我還嘗試枚舉Win32_DiskPartition
, Win32_LogicalDisk
和Win32_MappedLogicalDisk
類的東西,但根本沒有得到這些驅動器。
正如@FrédéricHamidi解釋的那樣,WMI存儲卷提供程序中的Win32_Volume類顯示有關已安裝卷的正確空間信息。
使用示例(C#)類似於:
// iSCSI drive mounted in a NTFS folder
var ntfsPath = @"x:\iscsi\volume";
// it's good to know that backspaces must be escaped in WMI queries
var cmd = string.Format(
"SELECT * FROM Win32_Volume WHERE Name LIKE '{0}%'",
ntfsPath.Replace(@"\", @"\\"));
using (var searcher = new ManagementObjectSearcher(cmd))
{
foreach (ManagementObject queryObj in searcher.Get())
{
var name = (string)queryObj["Name"];
var freeSpaceInBytes = (ulong)queryObj["FreeSpace"];
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.