0

在 Visual Studio 中,我可以简单地添加对程序集的引用,例如:Interop.ADODB。

如何在 powershell 中执行此操作?以下是爆款

[Reflection.Assembly]::LoadWithPartialName("Interop.ADODB")

$conn = New-Object ADODB.Connection

这是错误消息

New-Object : Constructor not found. Cannot find an appropriate constructor for type ADODB.Connection.
At C:\Users\michaelr\Desktop\jet-project\PS\test.ps1:3 char:19
+ $conn = New-Object <<<<  ADODB.Connection
    + CategoryInfo          : ObjectNotFound: (:) [New-Object], PSArgumentException
    + FullyQualifiedErrorId : CannotFindAppropriateCtor,Microsoft.PowerShell.Commands.NewObjectCommand

我在 Windows 7 x64 上。

4

3 回答 3

2

请改用此行:

$conn = New-Object -comobject ADODB.Connection

Powershell 原生地理解 com 对象(在某种程度上,对象并不总是有很多元数据),并为您完成所有互操作。您只需要告诉 powershell 它是一个 COM 对象。您不需要显式引用互操作程序集。

话虽如此,根据您的任务,您最好使用本机 .net 提供程序而不是 ADODB。

于 2013-06-27T23:56:55.787 回答
0

您正在寻找Add-Type cmdlet,它允许您将 .NET 代码编译到内存程序集中,或从磁盘加载程序集。

-AssemblyName如果要从 GAC 加载程序集,请检查参数,或者-Path如果您确切知道要加载的 DLL 的位置,请检查参数。

于 2013-06-27T19:14:09.987 回答
0

答案就在你面前:

Cannot find an appropriate constructor for type ADODB.Connection

您需要将连接字符串传递给构造函数,如下所示:

$c = new-object ADODB.connection "server=foo;user id=bar ..."

但是,我不明白为什么要在 .NET 中使用 1998 年的 ADODB,而您可以使用它System.Data。查看有关使用 PowerShell 访问数据库的 MSDN 文章:

http://technet.microsoft.com/en-us/magazine/hh855069.aspx

于 2013-06-28T01:01:54.683 回答