创建并返回 WMI 客户端对象,失败返回 null,
所有参数可省略,
@path 默认为 "\root\cimv2"
@computer 默认为"."
WMI / Windows Management Instrumentation 客户端。
用法也可可参考 com.monitor 库源码,以及『 范例 / COM 组件 / WMI 』。
参考文档 https://docs.microsoft.com/en-us/windows/win32/wmisdk/wmi-reference
创建 WMI 客户端对象,失败返回 null
for index,item in com.wmi.each("/*遍历 WMI 对象,
可输入WQL查询语句或类名
可选用参数@2指定 WMI 路径,默认为 "\root\cimv2"
可选用参数@3及后续参数指定格式化参数,
如果格式化参数是表,则可省略 @path 且不用保留参数位置,
参数表可格式化 @号 开头的命名参数或以 ? 号为占位符的匿名参数,
如果参数不是一个表,则调用 string.format 格式化*/") {
}
for event,targetInstance in com.wmi.eachNotification("/*遍历 WMI 查询事件通知,同步阻塞执行。
可输入WQL查询语句或类名
可选用参数@2指定 WMI 路径,默认为 "\root\cimv2"
可选用参数@3及后续参数指定格式化参数,
如果格式化参数是表,则可省略 @path 且不用保留参数位置,
参数表可格式化 @号 开头的命名参数或以 ? 号为占位符的匿名参数,
如果参数不是一个表,则调用 string.format 格式化*/") {
}
for item in com.wmi.eachProperties("/*遍历 WMI 对象的属性表,
可输入WQL查询语句或类名
可选用参数@2指定 WMI 路径,默认为 "\root\cimv2"
可选用参数@3及后续参数指定格式化参数,
如果格式化参数是表,则可省略 @path 且不用保留参数位置,
参数表可格式化 @号 开头的命名参数或以 ? 号为占位符的匿名参数,
如果参数不是一个表,则调用 string.format 格式化*/") {
}
格式化参数 @1 指定的 WQL 语句,
com.wmi.query 等函数调用此函数格式化 WQL 语句
格式化参数 @1 指定的 WQL 语句,
参数@2及后续参数指定格式化参数,
支持 @号 开头的命名参数或以 ? 号为占位符的匿名参数,
如果参数不是一个表,则调用 string.format 格式化
可输入WQL查询语句或类名,
返回首个查询结果
参数 @wql 可输入WQL查询语句或类名,
成功则返回首个查询结果,
可选用参数@3指定 WMI 路径,默认为 "\root\cimv2"
可选用参数@4及后续参数指定格式化参数,
支持 @号 开头的命名参数或以 ? 号为占位符的匿名参数,
如果参数不是一个表,则调用 string.format 格式化
参数 @wql 可输入WQL查询语句或类名,
成功则返回首个查询结果中 @property 参数指定的属性值
失败返回 null,
可选用参数@path指定 WMI 路径,默认为 "\root\cimv2"
可选用参数@4及后续参数指定格式化参数,
如果格式化参数是表,则可省略 @property,@path 且不用保留参数位置,
参数表可格式化 @号 开头的命名参数或以 ? 号为占位符的匿名参数,
如果参数不是一个表,则调用 string.format 格式化
返回所有属性
参数 @wmiObject 可输入 WMI 对象,
返回该对象所有属性组成的表,表以属性名为键,属性值为值,
失败返回 null
参数 @wql 可输入WQL查询语句或类名,
可选用参数@path 指定 WMI 路径,默认为 "\root\cimv2",
返回首个查询结果中所有属性组成的表,表以属性名为键,属性值为值,
失败返回 null
可选用参数@3及后续参数指定格式化参数,
如果格式化参数是表,则可省略 @path 且不用保留参数位置,
参数表可格式化 @号 开头的命名参数或以 ? 号为占位符的匿名参数,
如果参数不是一个表,则调用 string.format 格式化
查询并返回包含所有返回 WMI 对象的属性表的数组
@wql 参数可输入WQL查询语句或类名,
可选用参数@path 指定 WMI 路径,默认为 "\root\cimv2"
可选用参数@3及后续参数指定格式化参数,
如果格式化参数是表,则可省略 @path 且不用保留参数位置,
参数表可格式化 @号 开头的命名参数或以 ? 号为占位符的匿名参数,
如果参数不是一个表,则调用 string.format 格式化
执行 WQL 查询
参数 @wql 可输入 WQL 查询语句或类名,
调用 ExecQuery 返回查询结果,
可选用参数 @path 指定 WMI 路径,默认为 "\root\cimv2"
可选用参数@3及后续参数指定格式化参数,
如果格式化参数是表,则可省略 @path 且不用保留参数位置,
参数表可格式化 @号 开头的命名参数或以 ? 号为占位符的数组参数,
如果参数不是一个表,则调用 string.format 格式化
执行异步 WQL 查询
参数 @objSink 可指定 com.wmi.sink 对象,或者创建该对象的参数表。
参数 @wql 可输入 WQL 查询语句或类名,
调用 ExecQuery 返回查询结果,
可选用参数 @path 指定 WMI 路径,默认为 "\root\cimv2"
可选用参数@3及后续参数指定格式化参数,
如果格式化参数是表,则可省略 @path 且不用保留参数位置,
参数表可格式化 @号 开头的命名参数或以 ? 号为占位符的数组参数,
如果参数不是一个表,则调用 string.format 格式化
执行异步 WQL 查询以接收事件
参数 @objSink 可指定 com.wmi.sink 对象,或者创建该对象的参数表。
参数 @wql 可输入 WQL 查询语句或类名,
调用 ExecQuery 返回查询结果,
可选用参数 @path 指定 WMI 路径,默认为 "\root\cimv2"
可选用参数@3及后续参数指定格式化参数,
如果格式化参数是表,则可省略 @path 且不用保留参数位置,
参数表可格式化 @号 开头的命名参数或以 ? 号为占位符的数组参数,
如果参数不是一个表,则调用 string.format 格式化
com.wmi.sink(
OnCompleted = function(hResult,wbemErrorObject,wbemAsyncContext){
};
OnObjectPut = function(wbemObjectPath,wbemAsyncContext){
};
OnObjectReady = function(wbemObject,wbemAsyncContext){
};
OnProgress = function(upperBound,current,message,wbemAsyncContext){
};
)
执行查询并接收事件
执行异步查询以接收事件,
参数@1必须传入 com.wmi.sink 创建的对象,
参数@2指定 WQL 查询语句
更多参数说明请参考 https://docs.microsoft.com/en-us/windows/win32/wmisdk/swbemservices-execnotificationquery
使用 WQL 进行查询,返回 COM 对象,
参数@2必须省略,可选用参数@3指定选项,
半同步优化请将参数@3指定以下值 _wbemFlagReturnImmediately | _wbemFlagForwardOnly
更多参数说明请参考 https://docs.microsoft.com/en-us/windows/win32/wmisdk/swbemservices-execquery
异步查询对象,
参数@1必须传入 com.wmi.sink 创建的对象,
参数@2指定 WQL 查询语句。
更多参数说明请参考 https://docs.microsoft.com/en-us/windows/win32/wmisdk/swbemservices-execqueryasync
根据指定的类名,返回可使用 com.each 遍历的对象
删除对象
异步创建或更新 WMI 对象
创建或更新 WMI 对象,
修改属性后要调用这个函数才会生效,
进程可能需要管理权限
_wbemFlagForwardOnly=32
_wbemFlagReturnImmediately=16