I am a C# .NET developer/architect and understand that it uses objects (.NET objects) and not just streams/text.
I would like to be able to use PowerShell to call methods on my .NET (C# library) assembies.
How do I reference an assembly in PowerShell and use the assembly?
Reflection. Assembly class. This means that you can pass it to the Get-Member Windows PowerShell cmdlet and see what methods, properties and events are available.
An assembly is a packaged chunk of functionality (the . NET equivalent of a DLL). Almost universally an assembly will consist of exactly one file (either a DLL or an EXE).
With PowerShell 2.0, you can use the built in Cmdlet Add-Type.
You would just need to specify the path to the dll.
Add-Type -Path foo.dll
Also, you can use inline C# or VB.NET with Add-Type. The @" syntax is a HERE string.
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)
Take a look at the blog post Load a Custom DLL from PowerShell:
Take, for example, a simple math library. It has a static Sum method, and an instance Product method:
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; } } }
Compile and run in PowerShell:
> [Reflection.Assembly]::LoadFile("c:\temp\MyMathLib.dll") > [MyMathLib.Methods]::Sum(10, 2) > $mathInstance = new-object MyMathLib.Methods > $mathInstance.Product(10, 2)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With