PowerShell 1.0中的osql?

时间:2010-02-19 20:32:49

标签: stored-procedures powershell

我在Windows 2008 Server上设置了ODBC连接,我正在尝试替换一些使用Powershell文件进行某些处理的.BAT文件。

有没有办法在PowerShell中做同样的事情?

CALL osql / instanceName / Uuser / Ppassword / Q“EXECUTE storedProcName @ Parm1 =%ePROFILE%,@ param2 = N'%eValList%'

2 个答案:

答案 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
}