欢迎访问yhm138的博客园博客, 你可以通过 [RSS] 的方式持续关注博客更新

MyAvatar

yhm138

HelloWorld!

一些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里输入命令

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");
        }
    }
}
posted @ 2023-11-14 21:34  yhm138  阅读(227)  评论(0编辑  收藏  举报