Существует множество сценариев, в которых было бы полезно вызвать функцию Win32 или какую-либо другую DLL из сценария PowerShell. в Учитывая следующую сигнатуру функции:
bool MyFunction( char* buffer, int* bufferSize )
Я слышал, что в PowerShell CTP 2 есть что-то, что упрощает эту задачу, но мне любопытно, как это лучше всего сделать в PowerShell 1.0. Тот факт, что функция должна быть вызвана использует указатели, может повлиять на решение (хотя я точно не знаю).
Итак, вопрос в том, как лучше всего написать сценарий PowerShell, который может вызывать экспортированную функцию Win32, подобную приведенной выше?
Помните о PowerShell 1.0.





В PowerShell 1.0 нет никакого механизма для прямого вызова Win32 API. Конечно, вы могли бы написать вспомогательный класс C# или VB.NET, чтобы сделать это за вас и вызвать его из PowerShell.
Обновление: взгляните на -
http://blogs.msdn.com/powershell/archive/2006/04/25/583236.aspxhttp://www.leeholmes.com/blog/ManagingINIFilesWithPowerShell.aspx
Чтобы вызвать неуправляемый код из Powershell, используйте функцию Invoke-Win32, созданную Ли Холмсом. Вы можете найти источник здесь. Там вы можете увидеть пример того, как вызвать функцию, имеющую указатели, но более тривиальным использованием будет:
PS C:\> Invoke-Win32 "msvcrt.dll" ([Int32]) "puts" ([String]) "Test"
Test
0