在许多情况下,从PowerShell脚本调用Win32函数或其他DLL会很有用。给出以下函数签名:
bool MyFunction( char* buffer, int* bufferSize )
我听说有一些东西可以让PowerShell CTP 2更容易,但我很好奇这是如何在PowerShell 1.0 中做得最好。需要调用 的函数使用指针 的事实可能会影响解决方案(但我真的不知道)。
所以问题是编写PowerShell脚本的最佳方法是什么,可以像上面那样调用导出的Win32函数?
请记住PowerShell 1.0。
答案 0 :(得分:5)
要从Powershell调用非托管代码,请使用Lee Holmes创建的Invoke-Win32函数。您可以找到来源here。在那里你可以看到一个如何调用一个有指针的函数的例子,但更简单的用法是:
PS C:\> Invoke-Win32 "msvcrt.dll" ([Int32]) "puts" ([String]) "Test"
Test
0
答案 1 :(得分:1)
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
答案 2 :(得分:1)