PowerShell通过C#控制台输出不同

Eri*_*aub 5 c# powershell

相当新的C#,对PowerShell来说并不新鲜.

我想使用C#来执行PowerShell代码.但是,对象的输出与在PowerShell窗口中运行命令的输出不同.我找回了对象的名字而不是它的数据.这是我正在尝试的:

string script = @"
    get-process | ft
";

PowerShell powerShell = PowerShell.Create();

powerShell.AddScript(script);
var results = powerShell.Invoke();
foreach (var item in results)
{
    Console.WriteLine(item);
}
Run Code Online (Sandbox Code Playgroud)

返回:

Microsoft.PowerShell.Commands.Internal.Format.FormatEntryData

但是,在PowerShell命令行窗口中,它返回更加格式化的表视图:

PS C:\ Dropbox\PowerShell> ps | FT

处理NPM(K)PM(K)WS(K)VM(M)CPU(s)Id SI ProcessName ------- ------ ----- ----- --- - ------ - - ----------- 131 12 1980 2572 85 0.45 13216 1 acrotray

真的想要两件事:

  1. 将生成与PowerShell命令窗口相同的输出的代码
  2. 对正在发生的事情的解释,以便我可以学习如何更好地导航它

提前致谢!

Eri*_*aub 6

我想通了,感谢 codeproject 上的代码示例,我发现命令“out-string”需要添加到所有命令的末尾。所以要添加的额外代码是:

ps.AddCommand("Out-String");

我想知道控制台是否只是这样做,或者是否还有更多的事情要做。