我知道如何从win32_computersystem类获得总物理内存。但这是以字节或kb为单位的。我想要以MB或GB为单位的信息。在wmi (wql)查询。Wmic也可以工作。
您可以转换Win32_ComputerSystem的TotalPhysicalMemory
。试试这个:
using System;
using System.Management;
namespace WMISample
{
public class MyWMIQuery
{
public static void Main()
{
try
{
ManagementObjectSearcher searcher =
new ManagementObjectSearcher("root\CIMV2",
"SELECT TotalPhysicalMemory FROM Win32_ComputerSystem");
foreach (ManagementObject queryObj in searcher.Get())
{
double dblMemory;
if(double.TryParse(Convert.ToString(queryObj["TotalPhysicalMemory"]),out dblMemory))
{
Console.WriteLine("TotalPhysicalMemory is: {0} MB", Convert.ToInt32(dblMemory/(1024*1024)));
Console.WriteLine("TotalPhysicalMemory is: {0} GB", Convert.ToInt32(dblMemory /(1024*1024*1024)));
}
}
}
catch (ManagementException e)
{
}
}
}
}
必须手动转换该属性的值。此外,最好使用Win32_PhysicalMemory WMI类。
试试这个示例
using System;
using System.Collections.Generic;
using System.Management;
using System.Text;
namespace GetWMI_Info
{
class Program
{
static void Main(string[] args)
{
try
{
ManagementScope Scope;
Scope = new ManagementScope(String.Format("\\{0}\root\CIMV2", "."), null);
Scope.Connect();
ObjectQuery Query = new ObjectQuery("SELECT Capacity FROM Win32_PhysicalMemory");
ManagementObjectSearcher Searcher = new ManagementObjectSearcher(Scope, Query);
UInt64 Capacity = 0;
foreach (ManagementObject WmiObject in Searcher.Get())
{
Capacity+= (UInt64) WmiObject["Capacity"];
}
Console.WriteLine(String.Format("Physical Memory {0} gb", Capacity / (1024 * 1024 * 1024)));
Console.WriteLine(String.Format("Physical Memory {0} mb", Capacity / (1024 * 1024)));
}
catch (Exception e)
{
Console.WriteLine(String.Format("Exception {0} Trace {1}", e.Message, e.StackTrace));
}
Console.WriteLine("Press Enter to exit");
Console.Read();
}
}
}
想提一下,我使用了Win32_PhysicalMemory Capacity属性,直到我在Windows Server 2012上遇到不一致的结果。现在我使用两个属性(Win32_ComputerSystem:TotalPhysicalMemory和Win32_PhysicalMemory:Capacity)并选择两者中较大的
对于现在登陆这里的任何人(这篇文章是10年前的)
Get-WmiObject在PowerShell 3.0及以上版本中已弃用。(来源:https://ss64.com/ps/get-wmiobject.html)
Get-WmiObject被Get-CimInstance取代,这在很多方面都好得多!
如果您仍然想这样做,请考虑使用以下-
<标题> 代码$MemoryUncleaned = (Get-CimInstance Win32_PhysicalMemory | Measure-Object -Property capacity -Sum).sum /1gb
$Memory = $MemoryUncleaned.ToString() + "GB"
$Memory
<标题> 输出64GB
标题>标题>