WMI入门

作者: flashine | 来源:发表于2020-03-01 14:21 被阅读0次

    WMI

    Windows Management Instrumentation(WMI)

    简介

    WMI是Windows 2K/XP管理系统的核心,对于其他的Win32操作系统,WMI是一个有用的插件。WMI以CIMOM为基础,CIMOM即公共信息模型对象管理器(Common Information Model Object Manager),是一个描述操作系统构成单元的对象数据库,为MMC和脚本程序提供了一个访问操作系统构成单元的公共接口。WMI可以当作一组API来与Windows系统进行交互,整个运行过程都在内存中进行,不会留下任何痕迹。

    使用方式

    1. cmd下直接使用wmic
    2. powershell:调用Get-WmiObject模块
    3. WMI Query Language - WQL:
      通过powershell执行WQL:
    Get-WmiObject -Query 'Select ...'
    

    WMIC 动作

    • List -> 列出信息
    • Get -> 取值
    • Call -> 调用方法
    • Set -> 设置某个属性的值
    • Create -> 创建一个实例
    • Delete -> 删除一个实例
    • Assoc -> 显示关联

    常用用法:

    1. 查看别名:
    wmic alias list brief
    
    1. 查看系统一些内容:

    由于list列出的内容较多,此处可使用brief输出少部分,如果想要查看某一个值可以使用wmic some_class where 'name="xxx"' get xxx,如果不知道具体名称,可以使用like,如wmic some_class where 'like name="ls%" get xxx'

    # 列出系统安装的软件
    wmic product list brief
    # 列出系统运行的服务
    wmic service list brief
    # 列出系统运行的程序
    wmic process list brief
    # 查找域控
    wmic ntdomain list brief
    # 查找系统登录的用户
    wmic logon list brief
    # 查看已安装的补丁
    wmic qfe list brief
    # 查看进程启动时执行的命令
    wmic process where 'name="xx.exe"' get commandline
    wmic process where ProcessId=144 get commandline
    
    1. 查看某个类所有可调用的函数:

    以下以win32_process举例:
    powershell2.0 以上:

     Get-WmiObject -Query 'Select * From Meta_Class WHERE __Class = "win32_process"' | Where-Object { $_.PSBase.Methods } | Select-Object Name, Methods
    

    powershell3.0 以上:

     Get-CimClass -ClassName win32_product | where CimClassMethods -ne $null  | select CimClassName,CimClassMethods
    
    1. 调用类的函数
      举例:
    # 查看porcess可调用的函数:
    Get-WmiObject -Query 'Select * From Meta_Class WHERE __Class = "win32_process"' | Where-Object { $_.PSBase.Methods } | Select-Object Name, Methods
    
    Name          Methods
    ----          -------
    Win32_Process {Create, Terminate, GetOwner, GetOwnerSid...}
    

    通过查看可调用的方法可以知道我们可以使用call来调用方法:

    # 创建一个计算器进程
    wmic process call create calc
    # 关闭计算器进程(实际是挂起)
    # 此处使用name关闭有时不太好用,可以使用like或者是processid来关闭
    wmic process where processid=18084 call terminate 
    
    1. powershell 使用wmi
      Get-WmiObject在powershell3.0之后已经过时,使用Get-CIMInstance代替,但是仍然可以使用。
    # 查询进程:
    # 相对使用wmi命令输出的结果能更直观地查看(2列横向表格输出)
    Get-WmiObject -class win32_process -filter "name='lsass.exe'"
    
    1. wmi连接远程主机
      前提是远程主机开放了135端口且WMI服务开启
    # 在远程主机上创建进程执行命令
    wmic /node:1.1.1.1/user:administrator /password:123456 process call create "cmd.exe /c xxx"
    
    1. 列举本地主机中已安装的杀软:
    wmic /Node:localhost /Namespace:\\root\SecurityCenter2 Path AntiVirusProduct Get displayName /Format:List
    

    目前wmi了解较浅,还需要后续深入了解

    附:

    相关文章

      网友评论

          本文标题:WMI入门

          本文链接:https://www.haomeiwen.com/subject/louqkhtx.html