4

在许多情况下,从 PowerShell 脚本调用 Win32 函数或其他一些 DLL 会很有用。给定以下函数签名:

bool MyFunction( char* buffer, int* bufferSize )

我听说在 PowerShell CTP 2 中有一些东西可以让这更容易,但我很好奇如何在 PowerShell 1.0 中最好地做到这一点。需要调用的函数 使用指针这一事实可能会影响解决方案(但我真的不知道)。

所以问题是编写一个可以调用上面导出的 Win32 函数的 PowerShell 脚本的最佳方法是什么?

请记住 PowerShell 1.0。

4

2 回答 2

5

要从 Powershell 调用非托管代码,请使用由 Lee Holmes 创建的 Invoke-Win32 函数。你可以在这里找到源代码。在那里,您可以看到如何调用具有指针的函数的示例,但更简单的用法是:

PS C:\> Invoke-Win32 "msvcrt.dll" ([Int32]) "puts" ([String])  "Test"
Test
0
于 2008-09-26T23:48:55.100 回答
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

于 2008-09-26T23:44:28.777 回答