这必须是完全明显的,所以如果它是原谅我。我已经在一天的大部分时间里翻阅了帖子、文章等,希望有人能对此有所了解。
问题是我的 DataSet Fill 在 inlinescript 脚本块中失败。我一直在寻找如何在这个 inlinescript 脚本块中查看我的 $connectionstring、$query 和 $cmd 变量的内容。我已经定义了一个连接字符串和查询变量。我可以做一个 $conn.Open() 并且它不会失败。我已将连接和查询变量传递到我的 SQLCommand 对象中:
$cmd = New-Object system.Data.SqlClient.SqlCommand($query, $conn)
我创建了 DataSet 和 DataAdaptor 对象:
$ds = New-Object System.Data.DataSet
$da = New-Object System.Data.SqlClient.SqlDataAdapter($cmd)
执行以下操作时:
try {
[void]$da.Fill($ds)
}
catch {
Write-Error "Not able to fill dataset for list of customers!"
}
捕获/错误分支被采用。
我的信念是没有返回任何结果,因此 $cmd 为空导致填充错误。在运行手册中,将输出发送到控制台的命令均无效。能够捕获 $connectionstring、$query 和 $cmd 变量的内容将是巨大的。
顺便说一句,$query 中的代码在 SSMS 中按预期执行。
如果没有 try-catch 语句,则会出现以下错误:
CategoryInfo : NotSpecified: (:) [], MethodInvocationException + FullyQualifiedErrorId : InvalidOperationException You cannot call a method on a null-valued expression.