Недавно я хотел создать функцию в моем $profile
в PowerShell, которая подключается к моему серверу Postgres и выполняет запрос.
Функция выглядит примерно так:
function db{
Param(
[string]$provider = "PostgreSQL",
[string]$type = "UNICODE",
[string]$server = "localhost",
[string]$port = "5432",
[string]$db = "dbname",
[string]$uid = "username",
[string]$pwd = "password",
[string]$q = ""
)
#future upgrade: read default parameters from file
$DBConnectionString = 'Driver={'+$driver+' '+$type+'}:Server='+$server+';Port='+$port+';Database='+$db+';Uid='+$uid+';Pwd='+$pwd+';';
$DBConn = New-Object System.Data.Odbc.OdbcConnection;
$DBConn.ConnectionString = $DBConnectionString;
Write-Output "this connectionstring: $DBConnectionString";
$DBConn.Open();
$DBCmd = $DBConn.CreateCommand();
$DBCmd.CommandText = $q;
$DBCmd.ExecuteReader();
$DBConn.Close();
}
Как видите, я поставил Write-Output
, чтобы увидеть значение строки подключения.
Ошибка, которая выдаётся мне при выводе:
Exception setting "ConnectionString": "Format of the initialization string
does not conform to specification starting at index 0."
At C:\Users\...\Microsoft.PowerShell_profile.ps1:84 char:1
+ $DBConn.ConnectionString = $DBConnectionString
Write-Output
возвращает:
this connectionstring: Driver={PostgreSQL UNICODE}:Server=localhost;Port=5432;Database=dbname;Uid=username;Pwd=password;
Таким образом, значение, содержащееся в переменной $DBConnectionString
, является правильным.