C# Powershell 管道输出/响应

本文关键字:响应 输出 管道 Powershell | 更新日期: 2023-09-27 18:30:42

目前我正在开发一个c# Web服务,这是一个"中间人"。客户端可以调用方法"executeScript(字符串脚本)",我的 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();
}

记录。Info(o.ToString());-> 获取邮箱 xxxxx

属性

:"名称:长度,值:19,成员类型:属性"

这不是正确的输出。有没有办法像在原始 powershell 控制台中一样获取字符串响应?(在每个脚本上动态!

C# Powershell 管道输出/响应

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

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

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