具有多个计数器的C#远程性能计数器

时间:2012-10-12 09:06:44

标签: c# session performancecounter

我尝试使用以下远程计算机性能计数器代码。 getAll(counters)返回一个String数组,其中包含我想要的所有Performance Counter Pathes。但它不起作用。

调用命令后,

结果不包含任何内容。 任何想法为什么这不能正常工作?

Runspace runspace = RunspaceFactory.CreateRunspace();
runspace.Open();

Pipeline pipeline = runspace.CreatePipeline();

pipeline.Commands.AddScript(@"$sessions = New-PSSession -ComputerName " + serverName + Environment.NewLine
    + @"Invoke-Command -session $sessions -ScriptBlock {Get-Counter -counter " + getAll(counterNames) + " }" + Environment.NewLine
    + "Remove-PSSession -Session $sessions" + Environment.NewLine
    + "exit" + Environment.NewLine + "exit" + Environment.NewLine);


result = pipeline.Invoke();

例如,getAll返回此

getAll(counterNames)
{string[2]}
    [0]: "\\Memory\\Available Bytes"
    [1]: "\\Processor(_Total)\\% Processor Time"

我用于本地Power Shell命令,它正在使用getAll

psh.AddCommand("get-counter");
                    psh.AddParameter("computername", serverName);
                    psh.AddParameter("counter", getAll(counterNames));

                    result = this.PowershellInvoke(psh);

但是我需要远程计算机的解决方案,我需要一个会话。

1 个答案:

答案 0 :(得分:0)

请检查以下链接: -

  1. This链接谈到将文件发送到远程PS会话,并creates a byte array保存文件内容。

  2. This链接讨论了传递远程命令的参数。

  3. 希望这有帮助。