我正在编写一些旨在与PowerShell
一起工作的对象。
我希望能够以异步方式直接写入PowerShell
控制台。
到现在为止,我做了以下事情:
问题在于我有一个奇怪的输出混合了有时需要手动输入时阻止执行的Read-Host
消息。
我想知道是否有更好的方法可以异步地向powershell主机发送消息。
由于
答案 0 :(得分:0)
尝试从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提示执行此操作,但这对于ISE等非控制台应用程序的其他PowerShell主机没有帮助。