【发布时间】:2015-11-17 17:27:51
【问题描述】:
我有 powershell 脚本文件,它执行某些操作并输出结果。如果我使用 cmd 在远程主机上手动运行它,我会得到清晰的输出。
但是当我尝试使用 c# 通过 PowerShell Runspace 执行脚本时,我无法看到脚本的输出。仅命令自身。
using (PowerShell powershell = PowerShell.Create())
{
try
{
PowerShell ps = PowerShell.Create();
ps.AddScript("c:\temp\myps.ps1");
ICollection<PSObject> results = ps.Invoke();
using (StringWriter sw = new StringWriter())
{
foreach (PSObject invoke in results)
sw.WriteLine(invoke.ToString());
outp = sw.ToString();
}
//Script errors
if (ps.Streams.Error.Count > 0)
{
outp += Environment.NewLine + string.Format("{0} errors: ", ps.Streams.Error.Count);
foreach (ErrorRecord err in ps.Streams.Error)
outp += Environment.NewLine + err.ToString();
}
}
catch (Exception e)
{
// Terminating errors
outp = "Critical error: " + e.Message;
}
}
remoteRunspace.Close();
//In the end outp for me = "c:\temp\myps.ps1"
如何访问 C# 的输出?
【问题讨论】:
标签: c# powershell