簡體   English   中英

C#Powershell管道輸出/響應

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

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