gpt4 book ai didi

windows - WMI 中的数据库条目如何(以及多久)更新一次?

转载 作者:可可西里 更新时间:2023-11-01 10:28:54 30 4
gpt4 key购买 nike

我们需要为我们的 Windows 客户端计算机设计一个监控应用程序,我正在寻找有关 WMI 架构的一些信息。我们目前的计划是使用相当简单的 VBScript 脚本来定期查询数据库,将相关信息写入平面文件,以便稍后传输到中央服务器(我们的非 Windows 机器已经完成了所有繁重的分析和报告工作。

我曾尝试在 MSDN 和整个网络上寻找这个问题的答案,但所有文章似乎都特别“空洞”——很多“如何使用它”,但很少涉及“它的内部工作原理”。

以 VBScript 段为例:

set wmi = getObject("winmgmts:\\.\root\cimv2")
set itemCpu = wmi.get("Win32_PerfRawData_PerfOS_Processor.Name='_Total'")
n = itemCpu.PercentProcessorTime

或:

set wmi = getObject("winmgmts:\\.\root\cimv2")
set colMem = wmi.execQuery(
"select AvailableKBytes from Win32_PerfRawData_PerfOS_Memory",,48)

现在,我了解到这些数据会进入 CIM 数据库并检索相关条目,而且我认为将信息收集到该数据库与它的提取

换句话说,无论是否有人从所述数据库请求信息,Windows 都会收集统计信息并将其写入数据库。我的理解最好总结为:

+------------+    req/       ======== 
| Monitoring | resp / \ stats +------------+
| Processes | <-------> < Database > <-------- | Collectors |
| | \ / +------------+
+------------+ ========

\_____________________________/ \_____________________________/
On-demand Always happening

但我对填充数据库的过程更感兴趣。像这样的东西:

  • 我们如何知道 Windows“收集器”将信息添加到数据库的频率和情况?
  • Windows 内核是否在每次任务切换时写入进程信息?
  • 它是否每秒写入内存信息?
  • 它是否只按需更新数据库(当监控应用程序请求信息时)?

这就是我想要找出的那种东西。

有没有人有此类信息,或有关该主题的技术文章或白皮书的链接?

最佳答案

简而言之,WMI 元数据库是实时更新的。例如,查看系统时区类:

wmic timezone get /all /format:list

然后更改系统区域设置并再次重新检查时区类。

UAC(自 Win VISTA 起)在 WMI 基础架构中发挥着更大的作用: http://msdn.microsoft.com/en-us/library/windows/desktop/aa826699(v=VS.85).aspx

这篇教程文章(相当不错)描述了 CIM 架构:http://www.wbemsolutions.com/tutorials/CIM/index.html

这篇 MSDN 文章介绍了 MOF:http://msdn.microsoft.com/en-us/library/windows/desktop/aa823192(v=vs.85).aspx

因此总而言之,对于何时重新填充 CIM 数据库没有硬性规定,这取决于当时系统在做什么和/或用户在做什么。

关于windows - WMI 中的数据库条目如何(以及多久)更新一次?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5400566/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com