c# - WMI 查询的 select 子句中的数学运算

标签 c# .net wmi console-application

在我的控制台应用程序 (.NET) 中,我正在执行如下 WMI 查询:

ManagementObjectSearcher query;
        ObjectQuery oq;
        ManagementObjectCollection objectCollection;
        try
        {
            oq = new ObjectQuery("SELECT TotalVisibleMemorySize, FreePhysicalMemory FROM Win32_OperatingSystem");
            query = new ManagementObjectSearcher(oq);
            objectCollection = query.Get();
        }
        catch
        {
            return null;
        }
        return objectCollection;

我正在对收集到的数据进行划分,以便在我的应用程序中使用。它目前对我来说非常有效。
我正在为我的应用程序使用多个 wmi 查询。为了使单一方法从配置中执行我的所有 wmi 查询,我需要在查询的 select 子句中进行除法。
我需要像下面这样执行 WMI 查询:

SELECT ((TotalVisibleMemorySize)/1024) as TotalVisibleMemorySize1, ((FreePhysicalMemory)/1024) as FreePhysicalMemory1 FROM Win32_OperatingSystem

对于此查询,我收到错误 Invalid query
此查询中是否存在语法错误或无法在 WMi 查询的 select 子句中进行除法?

最佳答案

似乎 WMI 不支持复杂的查询。最好的办法是捕获 wmi 结果并根据需要进行转换:

foreach (ManagementObject mo in objectCollection)
{
Console.WriteLine("Total Memory = {0} MB", 
Convert.ToInt32(mo.GetPropertyValue("TotalVisibleMemorySize"))/1024);
}

关于c# - WMI 查询的 select 子句中的数学运算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11050098/

相关文章:

c# - 使用 linq 在 IGrouping 中查找重复项

c# - 使用目标框架 .Net 4.5.2 获取 System.AccessViolationException

c# - 使用 Windows 7 流媒体

c++ - WMI 和 Windows 服务之间的通信

c# - EntityFramework 修改数据库而不是重新创建

.net - 返回值数组时的最佳实践 (.NET)

.net - 实体以不正确的顺序保存而没有暴露外键

c# - epplus 部分已经存在

.net - 如何在远程计算机上执行批处理文件?

c# - 如何使用 C# 在 Windows 2000 上获取进程命令行参数