【问题标题】:C# Powershell Pipeline output/responseC# Powershell 管道输出/响应
【发布时间】:2013-09-09 08:53:38
【问题描述】:

目前我正在开发一个 C# Web 服务,它是一个“中间人”。 客户端可以调用方法“executeScript(String script)”,然后我的 Web 服务调用该脚本。

目前,Web 服务不知道客户端将执行哪些脚本(通常是交换脚本)。我如何正确读取输出?例如获取进程或其他东西。

我的错误阅读已经开始了。示例脚本:“获取邮箱 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 控制台中的字符串? (在每个脚本上动态显示!)

【问题讨论】:

    标签: c# powershell pipeline psobject


    【解决方案1】:

    请查看Windows Remote Management (WinRM),它允许您远程执行 PowerShell 脚本。

    使用 WinRM 很可能是比构建 Web 服务更好的解决方案,因为您可以限制一个人可以远程执行的操作。您的 Web 服务可能包含安全漏洞,允许在有限的日志记录下执行不需要的代码。

    【讨论】:

    • 我还不关心安全性。重要的是功能。就我第一眼看到的而言,当我使用 WinRM 时,我会得到一个 PSObject 的集合。我的问题又来了?我如何处理响应?我如何创建与在 powershell 控制台中相同的输出!???对不起 - 没有回答我的问题!
    • 我想在这里帮助你。暴露调用者可以执行任何脚本的端点是非常危险的。如果您仍想这样做(我强烈建议您这样做)并获得打印输出,您应该获得 StdOut (StandardOut) 流并将其内容返回给服务的调用者。您需要为此使用 Pipeline.Output,请参阅 msdn.microsoft.com/en-us/library/…
    【解决方案2】:

    PSObject 是返回的实际对象的包装器。你想使用PSObject.BaseObject

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-12-06
      • 1970-01-01
      • 1970-01-01
      • 2014-09-02
      • 2014-09-21
      • 2018-12-19
      • 2014-02-04
      相关资源
      最近更新 更多