Как вызвать функцию Win32 в PowerShell 1.0 с помощью P / Invoke? - PullRequest
4 голосов
/ 27 сентября 2008

Существует много сценариев, в которых было бы полезно вызвать функцию Win32 или какую-либо другую DLL из скрипта PowerShell. Дана следующая функция подписи:

bool MyFunction( char* buffer, int* bufferSize )

Я слышал, что в PowerShell CTP 2 что-то облегчает эту задачу, но мне интересно, как это лучше всего сделать в PowerShell 1.0 . Тот факт, что функция, которую нужно вызвать , использует указатели , может повлиять на решение (пока я не знаю).

Итак, вопрос в том, как лучше всего написать сценарий PowerShell, который может вызывать экспортированную функцию Win32, подобную приведенной выше?

Помните для PowerShell 1.0.

Ответы [ 3 ]

5 голосов
/ 27 сентября 2008

Чтобы вызвать неуправляемый код из Powershell, используйте функцию Invoke-Win32, созданную Ли Холмсом. Вы можете найти источник здесь . Там вы можете увидеть пример того, как вызывать функцию с указателями, но более простое использование будет:

PS C:\> Invoke-Win32 "msvcrt.dll" ([Int32]) "puts" ([String])  "Test"
Test
0
1 голос
/ 27 сентября 2008
1 голос
/ 27 сентября 2008

В PowerShell 1.0 нет механизма прямого вызова Win32 API. Конечно, вы могли бы написать вспомогательный класс C # или VB.NET, чтобы сделать это для вас, и вызвать его из PowerShell.

Обновление: взгляните на -

http://blogs.msdn.com/powershell/archive/2006/04/25/583236.aspx http://www.leeholmes.com/blog/ManagingINIFilesWithPowerShell.aspx

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...