使用 C# 中的 PowerShell 主机如何获取输出?
Using the PowerShell host from C# how can I get the output?
具有以下 NET 5 控制台应用程序:
static void Main(string[] args)
{
using var ps = PowerShell.Create();
// ps.AddCommand("Get-Service");
ps.AddStatement().AddCommand("Get-Service");
ps.Invoke();
}
调用似乎没有错误执行,但输出到哪里去了?
我已经尝试了 AddCommand
和 AddStatement
,并且还在调试器中检查了 ps
变量,没有输出迹象。我确实发现了 ps.Streams.Information
,但它是空的。
如 PowerShell.Invoke 方法的文档中所述,它 returns 一个包含 PowerShell 操作产生的任何结果的集合。
因此,你可以这样写
static void Main(string[] args)
{
using var ps = PowerShell.Create();
ps.AddStatement().AddCommand("Get-Service");
var results = ps.Invoke();
foreach (var result in results)
{
Console.WriteLine(result);
}
}
具有以下 NET 5 控制台应用程序:
static void Main(string[] args)
{
using var ps = PowerShell.Create();
// ps.AddCommand("Get-Service");
ps.AddStatement().AddCommand("Get-Service");
ps.Invoke();
}
调用似乎没有错误执行,但输出到哪里去了?
我已经尝试了 AddCommand
和 AddStatement
,并且还在调试器中检查了 ps
变量,没有输出迹象。我确实发现了 ps.Streams.Information
,但它是空的。
如 PowerShell.Invoke 方法的文档中所述,它 returns 一个包含 PowerShell 操作产生的任何结果的集合。
因此,你可以这样写
static void Main(string[] args)
{
using var ps = PowerShell.Create();
ps.AddStatement().AddCommand("Get-Service");
var results = ps.Invoke();
foreach (var result in results)
{
Console.WriteLine(result);
}
}