是否可以使用C#中的Format-Table?

时间:2014-04-17 13:37:43

标签: c# .net powershell cmdlets

我希望有一个C#控制台程序,它使用Format-Table来显示对象。这是一个简单的C#程序:

using System;
using System.Collections.Generic;
using System.Text;
using System.Management.Automation;

namespace PowerShellFormatTableTest
{
    class Program
    {
        static void Main(string[] args)
        {
            var ps = PowerShell.Create()
                .AddCommand("Get-Process")
                .AddCommand("Format-Table");

            foreach (var result in ps.Invoke())
            {
                // ...
            }
        }
    }
}

大多数result元素当然是FormatEntryData个对象。

有没有办法将Format-Table格式化的输出打印到控制台?

上面的例子只是一个简单的例子。通常情况下,我会传递任意对象

2 个答案:

答案 0 :(得分:2)

如果将结果从Format-Table传递给Out-String,那么您应该获得与字符串对象相同的输出。试试这个:

var ps = PowerShell.Create()
    .AddCommand("Get-Process")
    .AddCommand("Format-Table")
    .AddCommand("Out-String");

答案 1 :(得分:1)

以下是更新示例以演示Frode的建议:

using System;
using System.Collections.Generic;
using System.Text;
using System.Management.Automation;

namespace PowerShellFormatTableTest
{
    class Program
    {
        static void Main(string[] args)
        {
            var ps = PowerShell.Create()
                .AddCommand("Get-Process")
                .AddCommand("Format-Table")
                .AddCommand("Out-String");

            Console.WriteLine(ps.Invoke()[0]);
        }
    }
}