关于如何从C#代码执行powershell脚本有很多问题和答案,但我想知道运行空间/管道如何执行 .ps1文件。
我要问的背景是这样的: 我为PowerShell脚本构建了一个基本的asp.net前端,用于建立一个新的网站。它在IIS中创建站点并设置wwwroot文件夹,日志文件夹,AD用户以及其所需的所有其他内容。当我在powershell中以管理员身份运行它时,它非常有效。但是,当我通过C#管道运行它时,它会通过参数绑定异常中断管道。
我不是对这个特定问题的回答,我只是在寻找管道如何执行我的文件的解释,以便我可以更好地理解究竟是什么上。
答案 0 :(得分:3)
这不是关于运行空间如何工作的完整解释,但我{{}}覆盖了主要部分。
也是written a blog post的摘录:
Powershell运行时被调用为运行空间,默认情况下, 同步处理命令并传递处理结果 到主机应用程序,以便它们可以返回给用户。
答案 1 :(得分:1)
您是否尝试过使用ILSpy或在类视图中打开课程以查看该课程的代码?我一直这样做,看看Microsoft如何实现特定的类。如果这是一个简短的答案,我会在这里粘贴代码,但System.Management.Automation.Runspaces或Microsoft.Powershell命名空间有很多。看看你自己,你将能够确切地看到Microsoft如何实现Powershell脚本的执行。
希望这有帮助。