在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。
答案 0 :(得分:2)
请改用此行:
$conn = New-Object -comobject ADODB.Connection
Powershell原生地了解com对象(对于那些并不总是拥有大量元数据的对象而言)并且为你做所有的互操作。你只需要告诉powershell它是一个COM对象。您无需显式引用互操作程序集。
话虽如此,根据您的任务,您可能最好使用本机.net提供程序而不是ADODB。
答案 1 :(得分:0)
您正在寻找Add-Type cmdlet,它允许您将.NET代码编译到内存中的程序集中,或者从磁盘加载程序集。
如果要从GAC加载程序集,请查看-AssemblyName
参数;如果您确切知道要加载的DLL的位置,请查看-Path
参数。
答案 2 :(得分: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文章: