Powershell使用ODBC DSN而不是连接字符串从数据库读取

Glo*_*wie 5 powershell odbc dsn

我知道如何使用connectionstring从数据库中读取值,即

建立要读取的数据库连接

$conn = New-Object System.Data.SqlClient.SqlConnection

$conn.ConnectionString = "Server=10.10.10.10;Initial Catalog=database_name;User Id=$username;Password=$password;"

$SQL = "..."

$conn.Open()

# Create and execute the SQL Query

$cmd = New-Object System.Data.SqlClient.SqlCommand($sql,$conn)

$count=0
do{
    try{
        $rdr = $cmd.ExecuteReader()



        while ($rdr.read()){
            $sql_output += ,@($rdr.GetValue(0), $rdr.GetValue(1))
            $count=$count + 1
        }
        $transactionComplete = $true

    }
    catch{
        $transactionComplete = $false
    }
}until ($transactionComplete)



# Close the database connection

$conn.Close()
Run Code Online (Sandbox Code Playgroud)

如何用ODBC完成同样的事情,即我在服务器上设置了DSN(数据源名称)?

Ico*_*niu 8

如果您的 ODBC 连接位于用户 DSN 下但不在系统 DSN 下,则此方法有效。我找不到让它检查系统 DSN 连接的方法。

$conn = new-object System.Data.Odbc.OdbcConnection
$conn.connectionstring = "DSN=DSNNAME"
$conn.open()

$cmd = New-object System.Data.Odbc.OdbcCommand($sqlCommand,$conn)
$dataset = New-Object System.Data.DataSet
(New-Object System.Data.Odbc.OdbcDataAdapter($cmd)).Fill($dataSet) | Out- Null
$conn.Close()
Run Code Online (Sandbox Code Playgroud)


and*_*dyb 6

根据https://www.connectionstrings.com/odbc-dsn/你会使用类似......

DSN=myDsn;Uid=myUsername;Pwd=;
Run Code Online (Sandbox Code Playgroud)

DSN=...如果不需要信用,可能只会去.