2013-08-01 135 views
6

关于有很多问题和回答,如何从C#代码执行powershell脚本,但是我想知道runspace/pipeline 如何执行.ps1文件的执行C#运行空间/管道如何执行powershell脚本?

我问的上下文是这样的: 我为建立一个新网站的PowerShell脚本构建了一个基本的asp.net前端。它在IIS中创建站点,并设置wwwroot文件夹,日志文件夹,AD用户以及它需要的一切。当我在PowerShell中以管理员身份运行它时,它完美地工作。但是,当我通过C#管道运行它时,它会使用参数绑定异常中断管道。

我没有对这个特定问题的答案,我只是在寻找一个解释如何管道执行我的文件,以便我可以更好地了解究竟是怎么回事。

回答

1

您是否尝试过使用ILSpy或打开课程Class View查看该课程的代码?我一直这样做,看看Microsoft如何实现一个特定的类。如果这是一个简短的答案,我会在这里粘贴代码,但System.Management.Automation.Runspaces或Microsoft.Powershell命名空间有很多。仔细查看一下自己,您就可以清楚地看到Microsoft如何执行Powershell脚本。

希望这会有所帮助。

+0

感谢亚当,我给了它一个去,但它没有提供任何额外的信息如何执行文件。大多数方法沿着这些方向: 'public Collection Invoke() {0121}使用(Pipeline._trace.TraceMethod()) return this.Invoke((IEnumerable)null); } public abstract Collection Invoke(IEnumerable input);' – harrietgrace

1

这不是关于运行空间如何工作的完整解释,但是我已经覆盖了主要位的written a blog post

另外,从one of the msdn pages on how powershell works一个片段:

的Powershell的运行时被调用的运行空间和将默认情况下, 过程同步命令和处理 的结果传送到主机应用程序,以便它们可以返回给用户。