WMI是Windows在Powershell还未发布前,微软⽤来管理Windows系统的重要数据库⼯具,WMI本身的组织架
构是⼀个数据库架构,WMI 服务使⽤ DCOM(TCP 端⼝135)或 WinRM 协议
WMI Consumers(WMI使⽤者)
它位于WMI构架的最顶层,是WMI技术使⽤的载体。
如果我们是C++程序员,我们可以通过COM技术直接与下层通信。
⽽脚本语⾔则要⽀持WMI Scripting API,间接与下层通信。
对于.net平台语⾔,则要使⽤System.Management域相关功能与下层通信。
这些WMI的使⽤者,可以查询、枚举数据,也可以运⾏Provider的⽅法,还有WMI事件通知。当然这些数据操作都
是要有相应的Provider来提供。
WMI Infrastructure(WMI基础结构)
WMI基础结构是Windows系统的系统组件。它包含两个模块:包含WMI Core(WMI核⼼)的WMI Service(WMI服务)(Winmgmt)和WMI Repository(WMI存储库)。WMI存储库是通过WMI Namespace(WMI命名空间)组织起来的。在系统启动时,WMI服务会创建诸如root\default、root\cimv2和root\subscription等WMI命名空间,同时会预安装⼀部分WMI类的定义信息到这些命名空间中。其他命名空间是在操作系统或者产品调⽤有关WMI提供者(WMIProvider)时才被创建出来的。简⽽⾔之,WMI存储库是⽤于存储WMI静态数据的存储空间。WMI服务扮演着WMi提供者、管理应⽤和WMI存储库之间的协调者⻆⾊。⼀般来说,它是通过⼀个共享的服务进程Svchost来实施⼯作的。当第⼀个管理应⽤向WMI命名空间发起连接时,WMI服务将会启动。当管理应⽤不再调⽤WMI时,WMI服务将会关闭或者进⼊低内存状态。如我们上图所示,WMI服务和上层应⽤之间是通过COM接⼝来实现的。当⼀个应⽤通过接⼝向WMI发起请求时,WMI将判断该请求是请求静态数据还是动态数据。
WMI做什么
在Powershell未发布前⽤来管理Windows 2000、Windows95、Windows98、WindowsNT等操作系统 ,当然如今的所有Windows系统依旧可以使⽤WMI来进⾏管理。
为什么使⽤WMI
对于Windows运维管理⼈员
对于Windows运维管理功能主要是:访问本地主机的⼀些信息和服务,可以管理远程计算机(当然你必须要拥有⾜够的权限,并且双⽅开启WMI服务,且135端⼝的防⽕墙策略是⼊站出站允许的),⽐如:重启,关机,关闭进程,创建进程等。可以⾃定义脚本来进⾏⾃动化运维,⼗分⽅便,例如可以使⽤wmic、wbemtest⼯具。WMIC命令解释。
使⽤Powershell来操作WMI管理:
Powershell查询命名空间
Get-WmiObject -Class __namespace -Namespace root | select name
PS E:\powershell> Get-WmiObject -Class __namespace -Namespace root | select name
Name
----
subscription
DEFAULT
CIMV2
msdtc
MicrosoftIISv2
SECURITY
RSOP
PEH
WebAdministration
StandardCimv2
WMI
AccessLogging
directory
Policy
InventoryLogging
Interop
Hardware
ServiceModel
Microsoft
aspnet
Appv
Powershell查询BIOS信息
Get-WmiObject -Class Win32_BIOS
PS E:\powershell> Get-WmiObject -Class Win32_BIOS
SMBIOSBIOSVersion : R16ET32P (1.18 )
Manufacturer : LENOVO
Name : R16ET32P (1.18 )
SerialNumber : PF33414D
Version : LENOVO - 200
Powershell查询计算机信息
Get-WmiObject -Class Win32_Operatingsystem
PS E:\powershell> Get-WmiObject -Class Win32_Operatingsystem
SystemDirectory : C:\Windows\system32
Organization :
BuildNumber : 20348
RegisteredUser :
SerialNumber : 00454-60000-00001-AA244
Version : 10.0.20348
Powershell查询
Get-WmiObject -Namespace root\SecurityCenter2 -Class AntiVirusProduct
这⾥Powershell操作WMI的对象使⽤的是内置模块Get-WmiObject,以及查询的类为Win32_Service类,Win32_Service的其他类在官⽅⽂档中已经罗列详细:Win32类计算机硬件类、操作系统类等,但是要注意Win32_Service不是唯⼀可以操作WMI的类,以下类可以交替使⽤。
WIn32_Service
Win32_BaseService
Win32_TerminalService
Win32_SystemDriver
使⽤wmic来操作WMI管理:
#查询windows机器版本和服务位数和.net版本
wmic os get caption
wmic os get osarchitecture
wmic OS get Caption,CSDVersion,OSArchitecture,Version
#查询本机所有盘符
fsutil fsinfo drives
shell wmic logicaldisk list brief
shell wmic logicaldisk get description,name,size,freespace /value
#查看系统中⽹卡的IP地址和MAC地址
wmic nicconfig get ipaddress,macaddress
#⽤户列表
wmic useraccount list brief
#查看当前系统是否有屏保保护,延迟是多少
wmic desktop get screensaversecure,screensavertimeout
#域控机器
wmic ntdomain list brief
#查询杀软
wmic /namespace:\\root\securitycenter2 path antispywareproduct GET
displayName,productState, pathToSignedProductExe && wmic
/namespace:\\root\securitycenter2 path antivirusproduct GET displayName,productState,
pathToSignedProductExe
#查询启动项
wmic startup list brief |more
#获取打补丁信息
wmic qfe list
#启动的程序
wmic startup list brief
#启动的程序
wmic startup list full
对于网络安全⼈员
对于⽹络安全⼈员在攻防当中,利⽤WMI进⾏横向移动、权限维持、权限提升、包括免杀都可以进⾏利⽤
推荐本站淘宝优惠价购买喜欢的宝贝:
本文链接:https://hqyman.cn/post/5976.html 非本站原创文章欢迎转载,原创文章需保留本站地址!
休息一下~~