性能监视器:用户定义的数据收集器集路径

Posted

技术标签:

【中文标题】性能监视器:用户定义的数据收集器集路径【英文标题】:Performance Monitor: User defined Data Collector Sets Path 【发布时间】:2017-11-19 13:15:37 【问题描述】:

如下图所示,当我检查任何用户定义的数据收集器集(性能监视器)的“属性”时,我可以看到一个引用路径的“目录”选项卡。

是否有任何 C# 代码或 powershell 脚本或任何其他方式通过提供用户定义的数据收集器集名称来获得相同的路径?谢谢!

【问题讨论】:

“%windir%\System32\PLA.dll”中的PLA.dll程序集有用吗? 【参考方案1】:

以下是您可以使用的 Powershell 代码,只需根据需要更改代码和数据收集器中的路径,它将自动启动具有代码中给定进程名称的性能数据收集器

首先,如果代码只是绕过任何主机的 powershell 中的脚本执行策略并使用管理员权限运行脚本,如果启用了脚本执行,则可以删除它

    if (!([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole] "Administrator"))  Start-Process powershell.exe "-NoProfile -ExecutionPolicy Bypass -File `"$PSCommandPath`"" -Verb RunAs;

Param(
  [string]$name = "Test"
)

$datacollectorset = New-Object -COM Pla.DataCollectorSet
$datacollectorset.DisplayName = $name;
$datacollectorset.Duration = 14400 ;
$datacollectorset.SubdirectoryFormat = 1 ;
$datacollectorset.SubdirectoryFormatPattern = "yyyy\-MM";
$datacollectorset.RootPath = "%systemdrive%\PerfLogs\Admin\" + $name ;

$DataCollector = $datacollectorset.DataCollectors.CreateDataCollector(0) 
$DataCollector.FileName = $name + "_";
$DataCollector.FileNameFormat = 0x1 ;
$DataCollector.FileNameFormatPattern = "yyyy\-MM\-dd";
$DataCollector.SampleInterval = 10

$counters = @(
        "\Memory\Available MBytes",
        "\Memory\Page Faults/sec",
        "\Memory\Page Reads/sec",
        "\Memory\Page Writes/sec",
        "\Memory\Pages Input/sec",
        "\Memory\Pages Output/sec",
        "\Process(CloudHASHService)\*",
        "\Processor(_Total)\% Idle Time",
        "\Processor(_Total)\% Interrupt Time",
        "\Processor(_Total)\% Privileged Time",
        "\Processor(_Total)\% Processor Time",
        "\Processor(_Total)\% User Time"
) ;

$DataCollector.PerformanceCounters = $counters

try
    
    $datacollectorset.DataCollectors.Add($DataCollector) 
    $datacollectorset.Commit("$name" , $null , 0x0003) | Out-Null
    $datacollectorset.Start($false);

catch [Exception] 
 
    Write-Host "Exception Caught: " $_.Exception -ForegroundColor Red 
    return 
 

【讨论】:

以上是关于性能监视器:用户定义的数据收集器集路径的主要内容,如果未能解决你的问题,请参考以下文章

Windows 性能监视器API

Windows 性能监视器API

Windows 性能监视器API

Windows 性能监视器API

如何在Windows服务器做性能测试

性能监视器触发另一个程序