Ho la seguente funzione PS:Perché Powershell pensa che sto cercando di restituire un oggetto [] piuttosto che un DataTable?
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
}
La maggior parte della funzione è stata rimossa per brevità. Il problema che ho è quando chiamo la funzione in questo modo:
[System.Data.DataTable] $buildData = GetBuildData
ottengo il seguente errore:
Cannot convert the "System.Object[]" value of type "System.Object[]" to type "System.Data.DataTable".
Perché Powershell pensare che mi vogliono un [] array oggetto restituito quando è ovvio che la variabile $ dt è un DataTable?
EDIT:
Ho ricontrollato, e $dt
contiene dati. Ad esempio, il numero di Rows.Count è 1 che è previsto.
in quale riga si è verificato l'errore? il messaggio di errore dovrebbe fornire il numero di linea e di carattere. Presumo che accada qui: $ adapter.Fill ($ dt) ?? – D3vtr0n
Hai mai provato l'operatore ',' come suggerito nella risposta di jpmc26? Mi sono imbattuto in questo problema, e questa era la soluzione. –
Qualcuna delle risposte ha risolto il tuo problema? Se no, potresti aggiungere qualche informazione in più sul motivo per cui non hanno funzionato? – jpmc26