我可以用C#和Powershell做什么?

我对C#有一个很好的理解,并对PowerShell有一个非常基本的理解。 我正在使用Windows PowerShell CTP 3,这非常有趣。 但我想超越编写脚本/函数。 C#有没有很酷的东西?

我认为你可以用C#和PowerShell做的最有趣的事情就是构buildCmdLet的。 这些本质上是PowerShell的插件,用托pipe代码编写,像普通函数一样工作。 他们有一个动词 – 名词对,你已经使用的许多function实际上是cmdlet。

http://msdn.microsoft.com/en-us/magazine/cc163293.aspx

在最高级别,您有两个不同的选项您可以从C#程序主机PowerShell中通过RunSpaces和pipe道执行PowerShell命令。

或者你可以从PowerShell内运行C#代码。 这可以通过两种方式来完成。 使用PowerShellpipe理单元,提供PowerShell cmdlet和导航提供程序的编译dll,或通过新的cmdlet Add-Type ,它可以dynamic导入C#,VB,F#代码。 从帮助

$source = @" public class BasicTest { public static int Add(int a, int b) { return (a + b); } public int Multiply(int a, int b) { return (a * b); } } "@ Add-Type -TypeDefinition $source [BasicTest]::Add(4, 3) $basicTestObject = New-Object BasicTest $basicTestObject.Multiply(5, 2) 

答案是“这取决于”。 你可以用c#(构build窗口,Web客户端和移动客户端)做各种各样的东西。

你可以从C#调用powershell脚本。 看看这个网站==> 链接

你甚至可以将你的C#代码转换为PowerShell ==> 链接

你可以从以下两种方式中select一种:

  1. 你如何利用C#程序中的PowerShell
  2. 你如何利用PowerShell中的C#编程。

在一定程度上,他们是不同的问题,不同的答案。

从C#开始,您可以利用PowerShell引擎,运行空间,pipe道线等。与Exchante一样,您可以使用C#来完成所有的GUI工作,然后调用PowerShell cmdlet来完成所有困难的工作。 如果您可以findPowerShell cmdlet或脚本来利用此选项是适当的。

从PowerShell中,您可以使用C#来扩展在PowerShell中可以执行的操作。 您可以创buildcmdlts和提供程序,以使其他人可以访问应用程序数据。 或者您可以创build可以在PowerShell脚本中使用的对象。 这个选项是您帮助打开您的应用程序以更自动化的方式进行pipe理的方式。

所以取决于你想要做什么,你有select。

Scott Hanselman又名Hanselminutes有几个关于Powershell,CmdLets,C#等的播客。 这是最好的,如果你想了解它是什么,它是如何工作,更多。 在他的网站上search以获取播客。

在他的网站上的PS相关播客列表(按时间顺序倒序):

#190:Powershell / Lee Holmes和Jason Shirk
#162:Powershell 2.0
#49:Powershell / Bruce Payette
#36:Jeffrey Snover,Powershell架构师
#24:Windows PowerShell(MONAD),第二部分