Как нацелить несколько удаленных узлов в WQL? - PullRequest
0 голосов
/ 20 мая 2019

Я создаю сервис на C #, который регулярно опрашивает удаленные хосты в домене Active Directory с помощью WMI.Я использую 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 #.

Любая помощь очень ценится.

1 Ответ

0 голосов
/ 29 мая 2019

Вы можете использовать ORMi для создания нескольких соединений WMI и получения необходимой информации.

Вы можете сделать что-то вроде этого:

//Supposing you got the info on a list of computers

List<Computer> computers = new List<Computers>();

foreach(Computer c in computers)
{
    WMIHelper helper = new WMIHelper("root\\CimV2", c.WorkstationName);

    var info = helper.Query("select deviceid, volumename, description, filesystem, freespace, size from win32_logicaldisk").ToList();
}

См.документация для более конкретных данных.

...