以独立于语言环境的方式访问Windows性能计数器

我有一套混合的服务器,一些运行Windows的英文,一些运行意大利语的Windows。

有没有一种方法来读取性能计数器的值,而不使用区域设置相关的string?

我阅读了Zabbix文档 ,应该可以使用像\2\6这样的数字格式,但在Zabbix和Powershell中都不适用于我。

我想监视CPU利用率( \Processore(_Total)\% Tempo processore )。

任何build议是值得欢迎的。

Solutions Collecting From Web of "以独立于语言环境的方式访问Windows性能计数器"

解决方法很简单:唯一的问题是把所有的信息放在一起。

首先,打开注册表并转到以下注册表项:

 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Perflib 

您将找到以三位数字命名的条目(例如009,010,…)。 这三个数字是一个语言ID:009是英文,010是意大利语,依此类推。

在每个条目中,您将找到一个名为Counter的键。 打开它(双击),并在文本编辑器中复制首选语言的内容。 你会有类似于以下内容的东西:

 1 1847 2 System 4 Memory 6 % Processor Time 10 File Read Operations/sec 12 File Write Operations/sec 14 File Control Operations/sec 16 ... 

正如你所看到的,每个标签下面都有一个数字:那就是要使用的索引。 例如, % Processor Time的索引是10

如果你有一个复合表达式(例如\Processore(_Total)\% Tempo processore ),你必须使用\238(_Total)\6 (我用意大利标签)。

在Zabbix中,用于监视过去15分钟CPU平均利用率的表达式是:

 perf_counter[\238(_Total)\6, 900] 

我希望能说一切:如果有什么不清楚的地方,请留下评论。

你没有标记powershell或zabbix,所以我想你不介意如何在C中的一个例子:你可以使用它从powershell内,如果这是目标。

一般来说(正如你所说的),你可以通过索引进行查询。

他们在MSDN上有一个非常广泛的例子,它实际上是一个全功能的程序,包括如何按索引进行查询。: MSDN:检索计数器数据