如何创建和使用System.Diagnostics.PerformanceData.CounterSet?

时间:2015-02-02 15:25:12

标签: .net powershell performancecounter

我的.NET应用程序中已经使用PerformanceCounterCategory.Create方法创建了性能计数器,并传入CounterCreationDataCollection

我刚刚玩过Powershell Get-Counter命令,该命令带有-ListSet参数。如果你执行:

Get-Counter -ListSet * | select countersetname | sort countersetname

您将看到一个与您在perfmon.exe的可用计数器类别列表中看到的列表非常相似的列表。

问题是我的类别没有从上面的命令返回。

显然"柜台类别"和"计数器"是不同的概念。我在.NET中找到的最接近的是System.Diagnostics.PerformanceData.CounterSet。问题是没有关于如何创建这些"计数器集的良好文档或示例"。

我需要CounterSet吗?我该如何使用它?

1 个答案:

答案 0 :(得分:0)

事实证明,在我的Powershell会议中,这是一个(未确诊的)异常现象。当我在我的Powershell ISE(非管理员)中运行它时,我收到以下错误:

> Get-Counter -ListSet MyCategory
Get-Counter : Cannot find any performance counter sets on the localhost computer that match the following: MyCategory.
At line:1 char:1
+ Get-Counter -ListSet MyCategory
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : ObjectNotFound: (:) [Get-Counter], Exception
    + FullyQualifiedErrorId : NoMatchingCounterSetsFound,Microsoft.PowerShell.Commands.GetCounterCommand

奇怪的是,尝试按名称直接检索计数器会出现此错误:

>Get-Counter -Counter "\MyCategory\MyCounter"
Get-Counter : Internal performance counter API call failed. Error: c0000bb8.
At line:1 char:1
+ Get-Counter -Counter "\MyCategory\MyCounter"
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidResult: (:) [Get-Counter], Exception
    + FullyQualifiedErrorId : CounterApiError,Microsoft.PowerShell.Commands.GetCounterCommand

但是......当我在一个新的Powershell会话中运行它时(即使是非管理员)它运行得很好。

所以回答我的问题:PerformanceCounterCategory和" counter set"确实看起来是一回事。