[英]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.