一些WQL(Windows Management Instrumentation Query Language, WMI QL) 查询示例
目录
WQL介绍
WQL (WMI Query Language) 是一种 SQL 的变体,用于查询和设置 Windows 管理工具(WMI,Windows Management Instrumentation)的信息。WMI 是 Windows 操作系统的一部分,提供了一个统一的方式来获取系统管理信息,包括硬件和软件的状态,系统配置等。WQL 的语法非常类似于 SQL,但是它是专门为查询 WMI 信息设计的。
WMI是(Windows Management Instrumentation,Windows管理规范)
一些WQL查询示例
SELECT * FROM Win32_Process
这个查询将返回系统中所有正在运行的进程的详细信息。
SELECT * FROM Win32_Process WHERE Name = 'notepad.exe'
这个查询将返回名为 "notepad.exe" 的所有进程的详细信息。
SELECT * FROM Win32_NetworkAdapterConfiguration WHERE IPEnabled = TRUE
这个查询将返回所有启用了 IP 的网络适配器的配置信息。
SELECT * FROM Win32_BIOS
这个查询将返回系统的 BIOS 信息,包括制造商,版本,安装日期等。
SELECT * FROM Win32_Product
这个查询将返回系统中所有已安装的软件的列表。
SELECT * FROM Win32_Service WHERE Name = 'wuauserv'
这个查询将返回 Windows Update 服务('wuauserv')的详细信息。
SELECT * FROM Win32_LogicalDisk WHERE DriveType = 3
这个查询将返回所有的逻辑磁盘信息,`DriveType = 3` 表示查询所有的本地硬盘。
SELECT Name FROM Win32_PnPEntity
这个查询将返回你系统中所有 Plug and Play 设备的名称。这包括了所有已连接并被系统识别的硬件设备,例如鼠标、键盘、打印机、图形卡、声卡等(例如COM口接的设备等)。
怎么执行WQL查询?
在 Windows 10 上执行 WQL 查询,你可以使用 Windows 内置的 WMI 命令行工具(WMIC)或者 PowerShell。
WMIC
在CMD里输入命令
WMIC /NODE:"localhost" /NAMESPACE:"\\root\CIMV2" PATH Win32_BIOS GET /FORMAT:LIST
更多的例子:
list决定显示的信息格式与范围,它有Brief、Full、Instance、 Status、System、Writeable等多个参数,full只是它的一个参数,也是list的缺省参数,表示显示所有的信息。其他几个参数顾名思义,如Brief表示只显示摘要信息,Instance表示只显示对象实例,Status表示显示对象状态,Writeable表示只显示该对象的可写入的属性信息等。
wmic startup list brief | more
查询启动项(brief版)
wmic startup list full
列出启动项(full版)
wmic nicconfig get ipaddress,macaddress
查看系统中⽹卡的IP地址和MAC地址
wmic useraccount list brief
查看⽤户列表
wmic process where name="msedge.exe" list full
查看进程的详细信息
wmic cpu get /FORMAT:LIST
查看CPU参数
wmic DESKTOPMONITOR where Status="OK" get * /format:list
查看屏幕的一些参数
wmic ENVIRONMENT where "name like'%JAVA%'" get * /format:list
获取环境变量
wmic LOGICALDISK get * /format:list
获取硬盘信息
wmic SOUNDDEV list /format:list
声音设备管理
在PowerShell里输入cmdlet形式的命令
Get-WmiObject -Query "SELECT * FROM Win32_BIOS"
Get-WmiObject -Query "SELECT * FROM Win32_SoundDevice"
在C#代码中执行(如果你在VisualStudio中,记得导入引用)
为了运行这个示例,你可能需要在你的项目中添加对 System.Management.dll 的引用。你可以在 Visual Studio 的项目解决方案资源管理器中右键点击 "引用",然后选择 "添加引用",在弹出的对话框中搜索并添加 System.Management。
查询BIOS
using System;
using System.Management;
class Program
{
static void Main()
{
// 创建 WQL 查询字符串
string queryString = "SELECT * FROM Win32_BIOS";
// 创建一个查询对象
ManagementObjectSearcher searcher = new ManagementObjectSearcher(queryString);
// 执行查询并获取结果
ManagementObjectCollection queryResults = searcher.Get();
// 遍历查询结果并打印 BIOS 信息
foreach (ManagementObject result in queryResults)
{
Console.WriteLine("Name: " + result["Name"]);
Console.WriteLine("Manufacturer: " + result["Manufacturer"]);
Console.WriteLine("SerialNumber: " + result["SerialNumber"]);
Console.WriteLine("Version: " + result["Version"]);
Console.WriteLine("-------------");
}
}
}
获取CPU温度
using System;
using System.Management;
class Program
{
static void Main()
{
ManagementObjectSearcher searcher = new ManagementObjectSearcher(@"root\WMI", "SELECT * FROM MSAcpi_ThermalZoneTemperature");
foreach (ManagementObject queryObj in searcher.Get())
{
Double temp = Convert.ToDouble(queryObj["CurrentTemperature"].ToString());
temp = (temp - 2732) / 10.0;
Console.WriteLine("CPU温度 : " + temp.ToString() + " °C");
}
}
}