我的.NET应用程序中已经使用PerformanceCounterCategory.Create
方法创建了性能计数器,并传入CounterCreationDataCollection
。
我刚刚玩过Powershell Get-Counter
命令,该命令带有-ListSet
参数。如果你执行:
Get-Counter -ListSet * | select countersetname | sort countersetname
您将看到一个与您在perfmon.exe的可用计数器类别列表中看到的列表非常相似的列表。
问题是我的类别没有从上面的命令返回。
显然"柜台类别"和"计数器"是不同的概念。我在.NET中找到的最接近的是System.Diagnostics.PerformanceData.CounterSet。问题是没有关于如何创建这些"计数器集的良好文档或示例"。
我需要CounterSet
吗?我该如何使用它?
答案 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"确实看起来是一回事。