我尝试将以下代码用于远程计算机的性能计数器。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);
但我需要一个远程计算机的解决方案,我需要一个会话。