Powershell脚本中的引用程序集

时间:2013-06-27 19:00:47

标签: powershell

在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。

3 个答案:

答案 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文章:

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