Запустите сторонний DLL-файл с помощью PowerShell - PullRequest
25 голосов
/ 01 ноября 2011

Я не уверен, возможно ли это с PowerShell.

Но в основном у меня есть Windows Forms программа, которая настраивает программу под названием 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 Forms?

Ответы [ 3 ]

34 голосов
/ 02 ноября 2011

Да, вы можете:

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

Вы вызываете статический метод следующим образом:

[custom.type]::method()

Вместо Add-Type вы также можете использовать отражение:

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

(Обратите внимание, что даже в приведенном выше примере вызывается библиотека Reflection и статический метод LoadFile.)

11 голосов
/ 02 ноября 2011

Взгляните на сообщение в блоге Загрузка пользовательской библиотеки DLL из PowerShell . Если вы можете взаимодействовать с объектом в .NET, вы, вероятно, можете сделать это и в PowerShell.

0 голосов
/ 20 апреля 2019

На самом деле другие предлагаемые решения не работают для меня, вот альтернатива, которая идеально подходит для меня:

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