gpt4 book ai didi

powershell - 有没有办法让我在 powershell 运行时以编程方式获取 Powershell 输入和输出?

转载 作者:行者123 更新时间:2023-12-02 23:48:11 28 4
gpt4 key购买 nike

我有一个场景,我需要将 powershell 命令的命令和输出转发到另一个进程以进行日志记录和处理。

我希望这个控制台尽可能接近 powershell,因此不希望将它简单地托管在另一个控制台程序中。

还有 start-transcript,但这似乎是缓冲的。我需要逐行获取控制台输出。

如果我有办法在 System.Management.Automation.Internal.Host.InternalHostUserInterface 调用中的 WriteLine 期间在 powershell 主机上设置委托(delegate),那也是可行的。

这样做的最佳方法是什么?

更新(2012 年 5 月 29 日):我愿意不遗余力地做到这一点:

FieldInfo internaluiref = host.GetType().GetField("internalUIRef", BindingFlags.NonPublic | BindingFlags.Instance);
object valuecontainer = internaluiref.GetValue(host);
FieldInfo objectrefvalue = valuecontainer.GetType().GetField("_oldValue", BindingFlags.NonPublic | BindingFlags.Instance);
PSHostUserInterface internalHostUserInterface = (PSHostUserInterface)objectrefvalue.GetValue(valuecontainer);
FieldInfo externalUI = internalHostUserInterface.GetType().GetField("externalUI", BindingFlags.NonPublic | BindingFlags.Instance);
PSHostUserInterface externalHostUserInterface = (PSHostUserInterface)externalUI.GetValue(internalHostUserInterface);
HostUserInterfaceProxy indirector = new HostUserInterfaceProxy(externalHostUserInterface);
externalUI.SetValue(internalHostUserInterface, indirector);

这使我能够获得分类的输出流信息。

任何想法如何获得输入?

最佳答案

不要将格式化输出与原始输出混淆。任何到达主机接口(interface)的东西都已经被转换成一个字符串。如果您想要从 powershell 脚本返回的实际对象,请在此处查看我的其他答案,了解如何从 C# 中执行的脚本 block 流式传输输出:

How to stream the output of a programmatically executed ScriptBlock?

关于powershell - 有没有办法让我在 powershell 运行时以编程方式获取 Powershell 输入和输出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10727184/

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