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)
}

请问有什么帮助吗?

提前致谢

4

1 回答 1

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 指出的那样。

于 2012-06-25T01:18:06.037 回答