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

System.Data.SqlClientを介してすべてを作成および管理する代わりに、SQLクライアントツールをインストールしてSqlServerCmdletSnapin100を使用することをお勧めします。次に、コードは次のようになります。

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()は、埋められたの数を返します。これが、取得したものを取得する理由です。この方法を続行する場合は、paulsm4が指摘しているように、入力したDataTableを反復処理する必要があります。

于 2012-06-25T01:18:06.037 に答える