有没有办法将iSCSI驱动器上的可用空间装载为NTFS文件夹
本文关键字:空间 文件夹 NTFS iSCSI 驱动器 有没有 | 更新日期: 2023-09-27 18:27:45
我有一堆iSCSI驱动器作为NFTS文件夹安装(以避免耗尽所有驱动器号),充当迷你SAN,我想了解它们的可用空间信息。基本原因是当空间低于某个阈值时会收到警告,这是执行一系列其他检查的计划任务的一部分。
有没有一种方法可以做到这一点,最好使用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"];
}
}