如果原谅我,这必须是非常明显的。我已经通过帖子,文章等挖掘了一天中的大部分时间,并希望有人可以解释一下。
问题是我的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为空,导致填充错误。在Runbook中,将输出发送到控制台的命令都不是有效的。能够捕获$ connectionstring,$ query和$ cmd变量的内容将是巨大的。
顺便说一句,$ query中的代码在SSMS中按预期执行。
如果没有try-catch语句,则会出现错误:
CategoryInfo : NotSpecified: (:) [], MethodInvocationException + FullyQualifiedErrorId : InvalidOperationException You cannot call a method on a null-valued expression.