Get-WmiCounter Win32_PerfFormattedData_NETFramework_NETCLRMemory 在非管理上下文中不完整

Get-WmiCounter Win32_PerfFormattedData_NETFramework_NETCLRMemory 在非管理上下文中不完整

因此我创建了一个脚本来使用Get-CimInstance(取代Get-WMIObject)收集计数器并通过将其作为服务运行srvany.exe

我遇到一个问题,对于 .Net CLR 类,某些进程缺失未被收集,尤其是我想要监视的进程:w3wp。在提升的 Powershell 控制台中运行应用程序时,命令将返回所有依赖于 .Net 的进程,而如果我在标准 powershell 控制台中运行它,则只会收集本地 .Net 进程。

我需要为该服务设置适当的权限,以便它收集所有进程的所有指标。我尝试以管理员(域管理员帐户)身份运行该进程,但无济于事。我尝试root\cimv2在 WMI 管理控制台中明确授予管理员所有权限wmimgmt.msc,但问题仍未解决。

服务的默认运行环境是SYSTEM,这也是IIS的默认运行环境。

我不知道需要授予什么权限以及在哪里允许此服务收集所有数据。我觉得以管理员帐户登录的服务启动它应该足够了,但显然还不够。

问题示例

PS C:\Users\user> gcim Win32_PerfFormattedData_NETFramework_NETCLRSecurity | select-object Name

Name
----
_Global_
powershell
SCNotification

现在在以管理员身份运行的 powershell 控制台中:

PS C:\WINDOWS\system32> gcim Win32_PerfFormattedData_NETFramework_NETCLRSecurity | select-object Name

Name
----
_Global_
powershell
w3wp
w3wp#1
w3wp#2
powershell#1
SCNotification
SCNotification#1

Get-Counter在非管理控制台中使用替代方案甚至更糟糕:

PS C:\Users\user> Get-Counter -Counter "\.NET CLR Memory(*)\*" -SampleInterval 1 -MaxSamples 1
Get-Counter : The specified object was not found on the computer.
At line:1 char:1
+ Get-Counter -Counter "\.NET CLR Memory(*)\*" -SampleInterval 1 -MaxSamples 1
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidResult: (:) [Get-Counter], Exception
    + FullyQualifiedErrorId : CounterApiError,Microsoft.PowerShell.Commands.GetCounterCommand

而它则在管理控制台中提供了正确的信息。

相关内容