1

我尝试将以下代码用于远程计算机的性能计数器。getAll(counters) 返回一个字符串数组,其中包含我想要获取的所有性能计数器路径。但它不起作用。

调用命令后,结果不包含任何内容。任何想法为什么这不能正常工作?

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);

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

4

0 回答 0