web-dev-qa-db-ja.com

PowerShellを使用して.NETアセンブリを参照する方法

私はC#.NET開発者/アーキテクトであり、ストリーム/テキストだけでなくオブジェクト(.NETオブジェクト)を使用することを理解しています。

PowerShellを使用して、.NET(C#ライブラリ)アセンブリのメソッドを呼び出すことができるようにしたいと思います。

PowerShellでアセンブリを参照し、アセンブリを使用するにはどうすればよいですか?

41
Russell

ブログの投稿をご覧くださいカスタムDLL PowerShellから)

たとえば、簡単な数学ライブラリを考えてみましょう。静的な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)
48
Darin Dimitrov

PowerShell 2.0では、組み込みのCmdlet Add-Typeを使用できます。

Dllへのパスを指定するだけです。

Add-Type -Path foo.dll

また、Add-TypeでインラインC#またはVB.NETを使用できます。 @ "構文はHERE文字列です。

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)
53
Andy Schneider