【发布时间】:2019-05-20 10:36:07
【问题描述】:
我正在用 C# 创建一个服务,该服务使用 WMI 定期轮询 Active Directory 域中的远程主机。我一直在使用 System.Management.ManagementObjectSearcher,但到目前为止,我只能让它与本地主机一起使用。
例子:
private List<Disk> GetDisks()
{
var disks = new List<Disk>();
var searcher = new ManagementObjectSearcher("select deviceid, volumename, description, filesystem, freespace, size from win32_logicaldisk");
foreach (var obj in searcher.Get())
{
var id = obj.Properties["deviceid"].Value.ToString();
var name = obj.Properties["volumename"].Value.ToString();
var description = obj.Properties["description"].Value.ToString();
var fileSystem = obj.Properties["filesystem"].Value.ToString();
var freeSpace = Convert.ToUInt64(obj.Properties["freespace"].Value);
var totalSpace = Convert.ToUInt64(obj.Properties["size"].Value);
var disk = new Disk(id, name, description, fileSystem, freeSpace, totalSpace);
disks.Add(disk);
}
return disks;
}
但是,我有一个需要轮询的机器主机名列表。这可以通过 WMIC 轻松完成,如下所示:
wmic /node:"hostname1","hostname2","hostname3" logicaldisk get deviceid, volumename, description, filesystem, freespace, size /format:list
但我不知道如何在 C# 中做到这一点。
非常感谢任何帮助。
【问题讨论】: