我在Windows 2008 Server上设置了ODBC连接,我正在尝试替换一些使用Powershell文件进行某些处理的.BAT文件。
有没有办法在PowerShell中做同样的事情?
CALL osql / instanceName / Uuser / Ppassword / Q“EXECUTE storedProcName @ Parm1 =%ePROFILE%,@ param2 = N'%eValList%'
答案 0 :(得分:1)
SQL Server 2008提供了一个名为invoke-sqlcmd的osql Powershell cmdlet,它与Powershell中的osql执行相同类型的操作。那说如果你想继续使用osql,你应该可以做这样的事情并继续使用你的Windows用户varaialbes:
osql / instanceName / Uuser / Ppassword / Q“EXECUTE storedProcName @ Parm1 = $ env:ePROFILE,@ param2 = N'$ env:eValList'
答案 1 :(得分:0)
如果您想在查询数据库后使用实际的Powershell对象,可以使用我最近写的这样的函数:
function Query-DatabaseTable ( [string] $server , [string] $dbs, [string] $sql )
{
$Columns = @()
$con = "server=$server;Integrated Security=true;Initial Catalog=$dbs"
$ds = new-object "System.Data.DataSet" "DataSet"
$da = new-object "System.Data.SqlClient.SqlDataAdapter" ($con)
$da.SelectCommand.CommandText = $sql
$da.SelectCommand.Connection = $con
$da.Fill($ds) | out-null
$ds.Tables[0].Columns | Select ColumnName | % { $Columns += $_.ColumnName }
$res = $ds.Tables[0].Rows | Select $Columns
$da.Dispose()
$ds.Dispose()
return $res
}