簡體   English   中英

Runspace PowerShell輸出

[英]Runspace PowerShell output

我有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#的輸出?

請參閱有關PowerShell類的此文檔: https : //msdn.microsoft.com/zh-cn/library/system.management.automation.powershell(v=vs.85).aspx

看來您需要訪問PSObject的成員才能獲取輸出。 否則,它將僅將Laim ToString()數據發送到StringBuilder對象。 你有什么例子可以證明你回來了嗎? 我也許可以通過樣本提供更好的答案。 另外,遠程運行空間在哪里?

謝謝!

下一個對我有用的代碼:

try
  {
    PowerShell ps = PowerShell.Create().AddScript("c:\temp\myps.ps1", true);
    ps.Runspace = remoteRunspace;
    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();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM