我需要从 PowerShell 脚本中连接到 PostgreSQL 数据库。但是如何在没有 VisualStudio 的情况下安装 npgsql 呢?没有金块!
所以我尝试使用最新的 MSI 文件在 GAC 中安装驱动程序(Npgsql-3.0.5.msi
).
Using gacutil.exe
显示它已安装:
Npgsql,版本=3.0.5.0,文化=中性,PublicKeyToken=5d8b90d52f46fda7,处理器架构=MSIL
但PowerShell对此一无所知!Get-Module -ListAvailable
应该显示它但是:
PS C:\WINDOWS\system32> (gmo -l n*).Name
NetAdapter
NetConnection
NetEventPacketCapture
NetLbfo
NetNat
NetQos
NetSecurity
NetSwitchTeam
NetTCPIP
NetWNV
NetworkConnectivityStatus
NetworkLoadBalancingClusters
NetworkTransition
NFS
PS C:\WINDOWS\system32> _
没有模块Npgsql
!
我正在寻找Npgsql.dll
它就在那里:
PS C:\Windows\Microsoft.NET\assembly\GAC_MSIL\Npgsql\v4.0_3.0.5.0__5d8b90d52f46fda7> dir
Verzeichnis: C:\Windows\Microsoft.NET\assembly\GAC_MSIL\Npgsql\v4.0_3.0.5.0__5d8b90d52f46fda7
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a--- 08.01.2016 08:10 446464 Npgsql.dll
PS C:\Windows\Microsoft.NET\assembly\GAC_MSIL\Npgsql\v4.0_3.0.5.0__5d8b90d52f46fda7> _
由于无法识别模块npgsql
我的 PowerShell 代码不起作用:
function getDBConnection ($MyDBServer, $MyDBPort, $MyDatabase, $MyUid, $MyPwd) {
$DBConnectionString = "Provider=PostgreSQL OLE DB Provider;Data Source=$MyDBServer;location=$MyDatabase;User ID=$MyUid;password=$MyPwd;timeout=1000;"
$DBConn = New-Object System.Data.OleDb.OleDbConnection;
$DBConn.ConnectionString = $DBConnectionString
try {
$DBConn.Open
} catch {
"Failed to connect! Error: "+ $_.Exception.Message
}
return $DBConn
}
function closeDBConnection ($DBConn) {
$DBConn.Close
}
$query = "select * from test_table1"
$MyDBConnection = getDBConnection "dbserver" 5432 "databasename" "user" "pass"
try {
$cmd = New-Object System.Data.OleDb.OleDbCommand($query, $MyDBConnection)
} catch {
"Failed to create command object! Error: " + $_.Exception.Message
}
...
The $DBConn.Open
不是失败,而是财产ConnectionState
遗迹Closed
之后Open
call.
创建一个实例OleDbCommand
崩溃并显示德语错误消息:
创建命令对象失败!错误:对于“OleDbCommand”,并且其参数可以是以下内容:“2”。
这意味着不存在带有两个参数的重载方法。
问题:
- 我需要安装/配置什么才能
Npgsql
在 PowerShell 中可见?
- 如何加载/导入
Npgsql
PowerShell 脚本或模块中的模块?