2011-11-08 162 views
2

即时通讯目前使用C#传递一些对象,PowerShell和他们执行的方法是这样的:保存C#PowerShell的为脚本文件

var objs= new PSDataCollection<CustomObj> {obj}; 

    using (var ps = PowerShell.Create()) 
    { 
     ps.Runspace.SessionStateProxy.SetVariable("objList", objs); 
     ps.AddScript(@"$objList| ForEach { $_.Run()}"); 
     ps.AddCommand("Out-String"); 
     var output = ps.Invoke(); 

     var stringBuilder = new StringBuilder(); 
     foreach (var obj in output) 
     { 
      stringBuilder.AppendLine(obj.ToString()); 
     } 

     var result = stringBuilder.ToString().Trim(); 

     //Evaluate result. 
    } 

问:

有没有一种简单的方法来保存我的ps对象作为脚本文件没有做很多writeline?我在想东西的线路:

ps.SaveAsScript(filename); 

这将是我的很多自动化的工作有很大的帮助,这是否可能以简单的方式:)

亲切的问候

+0

任何最终解决方案与完整的来源?什么是{obj}?谢谢 – Kiquenet

回答

3

不,没有。您必须获取命令(ps.Commands.Commands)并根据需要写入文件。