Запустите мой сторонний DLL файл с помощью PowerShell
Я не уверен, возможно ли это или нет с помощью PowerShell.
Но в основном у меня есть программа Windows Forms, которая настраивает программу под названием EO Server. Сервер 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");
}
Возможно ли взаимодействовать с DLL файлом API и делать те же типы вызовов, что и в приложении Windows Forms?
Ответы
Ответ 1
Да, вы можете:
Add-Type -Path $customDll
$a = new-object custom.type
Вы вызываете статический метод следующим образом:
[custom.type]::method()
Вместо Add-Type вы также можете использовать отражение:
[Reflection.Assembly]::LoadFile($customDll)
(Обратите внимание, что даже выше вызывается библиотека Reflection и статический метод LoadFile.)
Ответ 2
Взгляните на сообщение в блоге Загрузка пользовательской библиотеки DLL из PowerShell. Если вы можете взаимодействовать с объектом в .NET, вы, вероятно, можете сделать это и в PowerShell.
Ответ 3
На самом деле, другие предлагаемые решения не работают для меня, вот альтернатива, которая идеально подходит для меня:
$AssemblyPath = "C:\SomePath\SomeLIB.dll"
$bytes = [System.IO.File]::ReadAllBytes($AssemblyPath)
[System.Reflection.Assembly]::Load($bytes)