34

我不确定这是否可以使用 PowerShell。

但基本上我有一个Windows 窗体程序,它配置了一个名为 EO Server 的程序。EO Server 有一个 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 窗体应用程序中相同类型的调用?

4

4 回答 4

40

是的你可以:

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

您可以像这样调用静态方法:

[custom.type]::method()

除了 Add-Type,您还可以使用反射:

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

(请注意,即使上面是调用反射库和 LoadFile 静态方法。)

于 2011-11-01T20:13:57.323 回答
12

查看博文Load a Custom DLL from PowerShell。如果您可以在 .NET 中与对象交互,那么您也可以在 PowerShell 中进行。

于 2011-11-01T20:09:55.877 回答
2

时间:2019-04-10 标签:c#dll

Add-Type -Path $dllPath
(new-object namespace.class)::Main() #Where namespace=dllnamespace, class=dllclass, Main()=dllstartvoid

信息。获取命名空间和类

$types = Add-Type -Path $dllPath -PassThru
$types | ft fullname
$types

如果它不是“可执行” dll(获取/设置 dll 的东西),那么这是我所知道的最好的(不需要与示例 dll 创建相比):

https://kazunposh.wordpress.com/2012/03/19/проверка-корректного-ввода-distinguished-name-в-скри/

于 2021-05-15T09:29:32.550 回答
1

实际上,其他提供的解决方案对我不起作用,这是一个非常适合我的替代方案:

$AssemblyPath = "C:\SomePath\SomeLIB.dll"
$bytes = [System.IO.File]::ReadAllBytes($AssemblyPath)
[System.Reflection.Assembly]::Load($bytes)
于 2019-04-20T06:59:06.540 回答