gpt4 book ai didi

c# - 如何从 C# 读取 PowerShell 脚本标准输出和标准错误

转载 作者:可可西里 更新时间:2023-11-01 09:20:27 26 4
gpt4 key购买 nike

我正在实现自定义 PowerShell 主机,我需要读取 PowerShell 脚本的标准输出和标准错误。问题是,当我将通过调用管道返回的对象转换为字符串时,我没有得到标准输出。但是,当我将“out-string”cmdlet 添加到管道时,它工作得很好。有什么方法可以在不使用“out-string”的情况下获取 stdout 和 stderror 吗?

this.currentPowerShell.AddScript(cmd);
Collection<PSObject> results = this.currentPowerShell.Invoke();
foreach (PSObject obj in results)
{
Console.WriteLine(obj.ToString());
}

当我使用上面的代码时,我只得到部分标准输出。

最佳答案

PowerShell 的 stdout 输出到另一个 exe 是通过获取对象并投影它们的字符串 View 来合成的。 PowerShell 的 native 输出是对象流。如果您想要这些对象的字符串版本,请使用 Out-String。但是,从 C# 的角度来看,直接处理 PowerShell 输出的对象通常更有用。

对于 stderr,您可以从 PowerShell.Streams.Error 属性中读取 ErrorRecords。如果您还想要一个人类可读的字符串,请在输出给您的用户之前通过 Out-String 运行它们。

关于c# - 如何从 C# 读取 PowerShell 脚本标准输出和标准错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21635541/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com