在PowerShell和C#之间共享变量

时间:2011-06-14 14:46:46

标签: c# scripting powershell powershell-v2.0

我正在尝试在.Net中构建一个文档程序集应用程序,它允许将规则和条件嵌入到文档片段中,大概是使用某种脚本语言(我真的不想发明自己的脚本语言) )

我需要能够让c#代码调用脚本语言,反之亦然,但重要的是我还希望它们能够通过引用共享任意数据结构(而不​​仅仅是按值传递几个字符串)

我可以使用PowerShell执行此操作,还是需要使用IronPython等DLR语言?那么,使用DLR语言还有其他优点,这意味着我应该使用DLR吗?

安迪

2 个答案:

答案 0 :(得分:2)

我认为this article正是您正在寻找的(无论如何,对于Powershell而言)。

使用DLR语言可能会使您执行的代码位更接近家庭。根据上面的文章,从.NET应用程序调用Powershell会在新线程上执行。

在任何情况下,我都会谨慎地执行任何脚本语言的随机位,而无需定义允许命令的子集并根据该命令验证输入。

答案 1 :(得分:0)

Powershell可以很好地实例化和使用C#(或任何.NET)对象。我从来没有尝试过使用C#代码调用powershell命令,但如果不能,我会感到惊讶。也就是说,DLR路线也很好,事实上Ayende的DSL书http://www.amazon.com/DSLs-Boo-Domain-Specific-Languages/dp/1933988606/ref=sr_1_1?ie=UTF8&qid=1308063119&sr=8-1中的例子也可能对你有用(即使你最终没有使用Boo,这是一个很好的阅读)。