web-dev-qa-db-ja.com

PowerShellでサードパーティのDLLファイルを実行します

PowerShellでこれが可能かどうかはわかりません。

しかし基本的に、EO Serverというプログラムを構成する Windows Forms プログラムがあります。 EOサーバーにはAPIがあり、EOServerAPI.dllへの参照を作成して、次のコードを実行します。

using EOserverAPI;
...
private void myButton_Click(object sender, EventArgs e)
{
    String MDSConnString="Data Source=MSI;Initial Catalog=EOMDS;Integrated Security=True;";

    //Create the connection
    IEOMDSAPI myEOMDSAPI = EOMDSAPI.Create(MDSConnString);

    //Get JobID
    Guid myMasterJobID = myEOMDSAPI.GetJobID("myJobRocks");
}

API DLLファイルと対話して、Windows Formsアプリケーションで行うのと同じタイプの呼び出しを行うことは可能ですか?

25
MicroSumol

はい、次のことができます。

Add-Type -Path $customDll
$a = new-object custom.type

次のような静的メソッドを呼び出します。

[custom.type]::method()

Add-Typeの代わりに、リフレクションを使用することもできます。

[Reflection.Assembly]::LoadFile($customDll)

(上記でもReflectionライブラリとLoadFile静的メソッドを呼び出していることに注意してください。)

34
manojlds

ブログの投稿を見てくださいカスタムを読み込むDLL PowerShellから)。 .NETのオブジェクトとやり取りできる場合は、おそらくPowerShellでも実行できます。

11
Chris N

実際、提供されている他のソリューションは私には機能しません。ここでは、私にとって完全に機能する代替手段です。

$AssemblyPath = "C:\SomePath\SomeLIB.dll"
$bytes = [System.IO.File]::ReadAllBytes($AssemblyPath)
[System.Reflection.Assembly]::Load($bytes)
1
f4d0