私は次のPS機能を持っています:
function GetBuildData {
[System.Data.SqlClient.SqlConnection] $conn = New-Object System.Data.SqlClient.SqlConnection
[System.Data.SqlClient.SqlCommand] $cmd = New-Object System.Data.SqlClient.SqlCommand
[System.Data.SqlClient.SqlDataAdapter] $adapter = New-Object System.Data.SqlClient.SqlDataAdapter
[System.Data.DataTable] $dt = New-Object System.Data.DataTable
try {
[string] $connStr = "myConnectionString"
$conn.ConnectionString = $connStr
$cmd.Connection = $conn
$cmd.CommandText = "SELECT * FROM TestTable"
$conn.Open
$adapter.SelectCommand = $cmd
$adapter.Fill($dt)
$conn.Close
}
catch [system.exception]
{
Write-Host $_
}
finally {
$adapter.Dispose
$cmd.Dispose
$conn.Dispose
}
return $dt
}
簡潔にするために、ほとんどの関数は削除されています。私が抱えている問題は、次のように関数を呼び出すときです。
[System.Data.DataTable] $buildData = GetBuildData
次のエラーが発生します。
タイプ「System.Object[]」の「System.Object[]」値をタイプ「System.Data.DataTable」に変換できません。
$ dt変数がDataTableであることが明らかなのに、Powershellがobject []配列を返したいと考えるのはなぜですか?
編集:
私は再確認しました$dt
が、データが含まれています。たとえば、Rows.Countの数は1であると予想されます。