我对C#有相当的了解,对Powershell只有基础的认识。我正在使用Windows PowerShell CTP 3,非常有趣。但我想超越编写脚本/函数。是否有任何可以与C#一起做的很酷的东西?
我对C#有相当的了解,对Powershell只有基础的认识。我正在使用Windows PowerShell CTP 3,非常有趣。但我想超越编写脚本/函数。是否有任何可以与C#一起做的很酷的东西?
在最高级别上,有两种不同的选择:你可以从一个C#程序中托管PowerShell并通过RunSpaces和管道执行PowerShell命令。
或者,你可以在PowerShell内部运行C#代码。这可以通过PowerShell snapin(提供PowerShell cmdlet和导航提供程序的编译后的dll)或通过新的cmdlet Add-Type 来完成,它允许你动态地导入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#和PowerShell构建CmdLet是最有趣的事情。这些本质上是用托管代码编写并像普通函数一样运行的PowerShell插件。它们具有动词-名词对,你已经在使用的许多功能实际上都是在幕后作为cmdlet运行的。
#190: Powershell的现状/Lee Holmes & Jason Shirk
#162: Powershell 2.0
#49: Powershell/Bruce Payette
#36: Jeffrey Snover,Powershell 架构师
#24: Windows Powershell(MONAD),第二部分