如何使用PowerShell引用.NET程序集

我是一名C#.NET开发人员/架构师,并且明白它使用对象(.NET对象)而不仅仅是stream/文本。

我想能够使用PowerShell调用我的.NET(C#库)集合的方法。

如何在PowerShell中引用程序集并使用程序集?

看看博客文章从PowerShell中加载自定义DLL

以一个简单的math库为例。 它有一个静态Sum方法和一个实例Product方法:

namespace MyMathLib { public class Methods { public Methods() { } public static int Sum(int a, int b) { return a + b; } public int Product(int a, int b) { return a * b; } } } 

编译并在PowerShell中运行:

 > [Reflection.Assembly]::LoadFile("c:\temp\MyMathLib.dll") > [MyMathLib.Methods]::Sum(10, 2) > $mathInstance = new-object MyMathLib.Methods > $mathInstance.Product(10, 2) 

使用PowerShell 2.0,您可以使用内置的Cmdlet添加types。

你只需要指定dll的path。

 Add-Type -Path foo.dll 

此外,您可以使用内联C#或VB.NET与添加types。 @“语法是一个HEREstring。

 C:\PS>$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); } } "@ C:\PS> Add-Type -TypeDefinition $source C:\PS> [BasicTest]::Add(4, 3) C:\PS> $basicTestObject = New-Object BasicTest C:\PS> $basicTestObject.Multiply(5, 2)