![](/img/trans.png)
[英]Capturing PowerShell output in C# after execution of each pipeline command
[英]C# Powershell Pipeline output/response
目前,我正在開發ac#Web服務,它是“中間人”。 客戶端可以調用方法“ executeScript(String script)”,而我的Web服務將調用該腳本。
當前,Web服務不知道客戶端將執行哪些腳本(通常交換腳本)。 如何正確讀取輸出? 例如獲取流程或其他東西。
我的錯誤閱讀已經可以使用了。 示例腳本:“ Get-Mailbox xxxxx”
if (pl.Error.Count > 0)
{
//error in pipeline
var errorList = pl.Error.Read() as Collection<ErrorRecord>;
if (errorList != null)
{
foreach (ErrorRecord er in errorList)
{
logger.Error(er.Exception.Message);
ExceptionObject eo = new ExceptionObject();
eo.message = er.Exception.Message;
eo.source = er.Exception.Source;
eo.stackTrace = er.Exception.StackTrace;
errors.Add(eo);
}
}
if (pso != null)
{
foreach (PSObject o in pso)
{
logger.Info("size: " + o.Properties.Count());
logger.Info(o.ToString());
foreach (PSPropertyInfo psprop in o.Properties)
{
sb.AppendLine("Name: " + psprop.Name + ", Value: " + psprop.Value + ", MemberType: " + psprop.MemberType);
}
}
logger.Info(pso.ToString());
pro.result = sb.ToString();
}
logger.Info(o.ToString()); ->獲取郵箱xxxxx
屬性:“名稱:長度,值:19,成員類型:屬性”
那不是正確的輸出。 有沒有辦法像原始Powershell控制台一樣以字符串形式獲取響應? (動態地在每個腳本上!)
請查看Windows遠程管理(WinRM) ,它使您可以遠程執行PowerShell腳本。
與構建Web服務相比,使用WinRM最有可能是更好的解決方案,因為您可以限制一個人可以遠程執行的操作。 您的Web服務可能會包含安全漏洞,從而允許在執行人員限制登錄的情況下執行有害代碼。
PSObject是返回的實際對象的包裝。 您要使用PSObject.BaseObject 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.