0

ミニ SAN として機能するNFTS フォルダー (すべてのドライブ文字を使い果たすのを避けるため) としてマウントされたiSCSI ドライブの束があり、それらの空き容量に関する情報を取得したいと考えています。基本的な理由は、他の多くのチェックを行うスケジュールされたタスクの一部として、スペースが特定のしきい値を下回ったときに警告を受け取ることです。

できればC#を使用して(WMI、P / Invokeなどを介して)それを行う方法はありますか?もちろん、スクリプト ソリューションも優れています。このようなパスを使用して初期化を使用して、楽観的なルートを最初に試しましたDriveInfoが、マウントではなくルートボリュームに関する情報を返すだけです。のようなものも列挙しようとしましたがWin32_DiskPartition、それらのドライブをまったく取得できませんでした。Win32_LogicalDiskWin32_MappedLogicalDisk

4

1 に答える 1

0

@FrédéricHamidi が説明したように、WMI Storage Volume Provider の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"];
    }
}
于 2014-11-11T15:09:32.390 に答える