5
非常感謝@brianlist,我已經嘗試了您的建議,並且在使用bulkcopy時它給了我這個錯誤,不確定值是否已傳遞到$value
。遠程作用域到本地
Cannot convert argument "0", with value: "System.Object[]", for "WriteToServer"
to type "System.Data.DataRow[]": "Cannot convert the "System.Data.DataRow" value
of type "Deserialized.System.Data.DataRow" to type "System.Data.DataRow"."
At C:\test\modified.ps1:11 char:24
+ $bulkCopy.WriteToServer <<<< ($value)
+ CategoryInfo : NotSpecified: (:) [], MethodException
+ FullyQualifiedErrorId : MethodArgumentConversionInvalidCastArgument
Get-Content 'C:\test\computers.txt' | ? { $_.trim() -ne "" } | ForEach-Object {
$value = Invoke-Command -Computer $_ -ScriptBlock {
Param($computer)
#..
$SqlAdapter = New-Object System.Data.SqlClient.SqlDataAdapter
$global:mdtable = New-Object System.Data.DataTable
$SqlAdapter.SelectCommand = $SqlCmd
$nRecs = $SqlAdapter.Fill($mdtable)
$mdtable
} -ArgumentList $_ -Credential $cred
} | test
Function test {
$Database = 'Test1'
$table = 'dbo.table_2'
$connectionstring = "Data Source=mylocal;Integrated Security=True;Initial Catalog=$Database"
$Conn = New-Object System.Data.SqlClient.SQLConnection($connectionstring)
$conn.open()
$bulkcopy = New-Object Data.SqlClient.SqlBulkCopy($conn)
$bulkcopy.DestinationTableName = $table
$bulkCopy.WriteToServer($value)
$conn.close()
}
您應該對答案本身發表評論以討論它(也會通知答案者),但我很感謝您將錯誤編輯到問題中。它看起來像你可能返回的不僅僅是scriptblock中的$ mdtable的值。確保您使用的其他語句都不返回值。如果他們這樣做,管道到'Out-Null'來壓制它們(或者分配給'$ null')。 – briantist
[也許有關](http://stackoverflow.com/q/1918190/1630171)。 –
我製作了$ nRecs | Out-Null,它仍然給我同樣的錯誤。這是此腳本工作的最後一步,任何人都可以幫助我找出問題 –