簡體   English   中英

如何從C#中讀取PowerShell腳本stdout和stderr

[英]How to read PowerShell script stdout and stderr from C#

我正在實現自定義PowerShell主機,我需要讀取PowerShell腳本的stdout和stderr。 問題是當我將通過調用管道返回的對象轉換為字符串時,我沒有得到stdout。 但是,當我向管道添加“out-string”cmdlet時,它可以正常工作。 有沒有辦法在不使用“out-string”的情況下獲取stdout和stderror?

this.currentPowerShell.AddScript(cmd);
Collection<PSObject> results = this.currentPowerShell.Invoke();
foreach (PSObject obj in results)
{
      Console.WriteLine(obj.ToString());
}

當我使用上面的代碼時,我只得到部分stdout。

PowerShell的stdout輸出到另一個exe是通過獲取對象並投影它們的字符串視圖來合成的。 PowerShell的本機輸出是一個對象流。 如果您想要這些對象的字符串版本,請使用Out-String 但是,從C#的角度來看,直接處理PowerShell輸出的對象通常更有用。

對於stderr ,您可以從PowerShell.Streams.Error屬性中讀取ErrorRecords。 如果您還需要一個人類可讀的字符串,請在輸出到您的用戶之前通過Out-String運行它們。

暫無
暫無

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

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