C#运行空间/管道如何执行PowerShell脚本?

7
有很多关于如何从C#代码执行powershell脚本的问题和答案,但我想知道运行空间/管道如何执行.ps1文件。
我提问的背景是这样的:我为一个设置新网站的powershell脚本构建了一个基本的asp.net前端。它在IIS中创建网站并设置wwwroot文件夹、日志文件夹、AD用户以及其他所有需要的内容。当我以管理员身份在powershell中运行它时,它运行得非常完美。然而,当我通过C#管道运行它时,它会因参数绑定异常而中断管道。
我不是要解决这个具体问题,我只是想解释一下管道是如何执行我的文件的,这样我就可以更好地理解到底发生了什么。
2个回答

4
这不是关于runspace如何工作的完整解释,但我已经写了一篇博客文章涵盖了主要部分。
另外,以下是从Powershell工作原理之一的MSDN页面的片段
引用: PowerShell运行时作为一个runspace被调用,并默认情况下同步处理命令并将处理结果传递给宿主应用程序,以便返回给用户。

1

你尝试过使用 ILSpy 或在类视图中打开类以查看类的代码吗?我经常这样做来了解Microsoft如何实现特定的类。如果答案很短,我会在此处粘贴代码,但是System.Management.Automation.Runspaces或Microsoft.Powershell名称空间有很多内容。自己看看,你就能够看到Microsoft如何实现执行PowerShell脚本。

希望这可以帮到你。


谢谢Adam,我尝试了一下,但它没有提供有关如何执行文件的任何额外信息。大多数方法都是这样的: public Collection<PSObject> Invoke() { using (Pipeline._trace.TraceMethod()) return this.Invoke((IEnumerable) null); } public abstract Collection<PSObject> Invoke(IEnumerable input); - harrietgrace

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接