powershell以计数器名称逃避简单引用

时间:2017-10-31 14:14:51

标签: powershell performancecounter

我试图获取我的一个.NET程序的计数器(使用" PathsWithInstance")。 似乎我不能使用简单的语法,因为简单的引用存在(法语操作系统版本):

Get-Counter -Counter "\Mémoire CLR .NET(MyProgram)\Nombre d'octets dans tous les tas"

我尝试了各种逃避策略,但是我总是收到一个错误,告诉我找不到指定的couonter。

我该怎么逃避?

我发现了这个临时解决方法:

(Get-Counter -Counter "\mémoire clr .net(MyProgram)\*").CounterSamples | Where-Object {$_.Path -match "Nombre d'octets dans tous les tas"}

编辑,由于评论: 所以我仍然不明白为什么这不起作用:

Get-Counter -Counter "\mémoire clr .net(MyProgram)\nombre d'octets dans tous les tas"

并引发以下错误(抱歉用法语):

Get-Counter : Le compteur spécifié n’a pas été trouvé.
Au caractère Ligne:1 : 1
+ Get-Counter -Counter "\mémoire clr .net(MyProgram)\nombre d'octets ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidResult : (:) [Get-Counter], Exception
    + FullyQualifiedErrorId : CounterApiError,Microsoft.PowerShell.Commands.GetCounterCommand

虽然这确实有效:

(Get-Counter -Counter "\mémoire clr .net(MyProgram)\*").CounterSamples | Where-Object {$_.Path -match "nombre d'octets dans tous les tas"}

1 个答案:

答案 0 :(得分:0)

对我来说,诀窍是用英语代替法语。

我没有设法用regedit重命名,而是替换了这里描述的文件:https://www.zabbix.com/forum/zabbix-cookbook/7524-how-to-force-perfmon-counters-description-to-be-in-english?p=182838#post182838

重命名文件的脚本:

cd \windows\system32

move perfc00C.dat perfc00C_bak.dat
move perfd00C.dat perfd00C_bak.dat
move perfh00C.dat perfh00C_bak.dat
move perfi00C.dat perfi00C_bak.dat

copy perfc009.dat perfc00C.dat
copy perfd009.dat perfd00C.dat
copy perfh009.dat perfh00C.dat
copy perfi009.dat perfi00C.dat