powershell:输出仅显示sql脚本受影响的行数

时间:2012-06-24 21:47:58

标签: tsql powershell-v2.0

我在PowerShell中运行一个非常简单的TSQL代码。但输出仅显示受影响的行数,但不显示实际结果。代码如下:

function test([string] $Hostname )
{
    try
    {
    $con="server=$Hostname;database=master;Integrated security=sspi"
    $da=New-Object System.Data.SqlClient.SqlDataAdapter ("                      
                 select * from sysdatabases 
                ",$con)
    $dt=New-Object System.Data.DataTable
    $da.fill($dt)|Out-Null

    $da.fill($dt) | Format-table -AutoSize
    }
    catch [Exception]
    {
        ## Do something with the exception 
        write-host "Could not run test function for "+$Hostname
    }

}
foreach ($Hostname in Get-Content $ServerList)
{
    test($Hostname)
}

请帮忙吗?

提前致谢

1 个答案:

答案 0 :(得分:1)

我建议安装SQL客户端工具并使用SqlServerCmdletSnapin100而不是必须创建&通过System.Data.SqlClient管理所有内容。然后你的代码将成为:

function test([string] $Hostname )
{
    try {
        invoke-sqlcmd -server $hostname -database master -query "select * from sysdatabases" |ft -auto
    } catch [Exception] {
        ## Do something with the exception 
        write-host "Could not run test function for "+$Hostname
    }
}

SqlDAtaAdapter.Fill()会返回已填充的行数,这就是您获得所需内容的原因。如果你想以这种方式继续,你需要遍历已经填充的DataTable,正如paulsm4指出的那样。