我正在编写一些设计用于(也)与PowerShell一起工作的对象。我希望能够以异步的方式直接写入PowerShell控制台。到目前为止,我做了以下工作:
问题是,我有一个奇怪的输出,它混合了有时需要手动输入时阻止执行所需的Read-Host消息。
我想知道是否有更好的方法异步向powershell主机发送消息。
谢谢
发布于 2012-12-10 22:18:31
尝试从C#中获取Host,并使用它的Write*方法来实现这一点,例如:
public class Poco
{
private PSHostUserInterface _ui;
public Poco()
{
var runspace = Runspace.DefaultRunspace;
Pipeline pipeline = runspace.CreateNestedPipeline("Get-Variable host -ValueOnly", false);
Collection<PSObject> results = pipeline.Invoke();
if (results.Count > 0)
{
var host = results[0].BaseObject as PSHost;
if (host != null)
{
_ui = host.UI;
}
}
}
public void WriteLine(string msg)
{
_ui.WriteLine(msg);
}
}注意:虽然您可以使用Console.WriteLine对PowerShell提示符执行此操作,但这对其他PowerShell主机(如ISE )没有帮助,因为它们不是控制台应用程序。
https://stackoverflow.com/questions/13803436
复制相似问题