有没有办法将iSCSI驱动器上的可用空间装载为NTFS文件夹

本文关键字:空间 文件夹 NTFS iSCSI 驱动器 有没有 | 更新日期: 2023-09-27 18:27:45

我有一堆iSCSI驱动器作为NFTS文件夹安装(以避免耗尽所有驱动器号),充当迷你SAN,我想了解它们的可用空间信息。基本原因是当空间低于某个阈值时会收到警告,这是执行一系列其他检查的计划任务的一部分。

有没有一种方法可以做到这一点,最好使用C#(通过WMI、p/Invoke或其他方式)?当然,任何脚本解决方案都会很棒,因为我可能无论如何都可以调用它(PowerShell)?我首先尝试了乐观路由,使用DriveInfo初始化为使用这样的路径,但它只是返回有关根卷的信息,而不是装载。我也尝试过列举Win32_DiskPartitionWin32_LogicalDiskWin32_MappedLogicalDisk之类的东西,但根本没有得到这些驱动器。

有没有办法将iSCSI驱动器上的可用空间装载为NTFS文件夹

正如@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"];
    }
}