我有以下PowerShell代码:
Add-Type -AssemblyName System.Data
function SQLBuild
{
[DataTable] $dt = (New-Object -TypeName System.Data.DataTable)
$dt = fillDataTable
$dt.rows.count
foreach ($dr in $dt.rows)
{
Write-Host "$($dr[0])"
}
}
我收到以下错误:
Cannot index into a null array.
Untitled2.ps1:19 char:43
+ Write-Host "$($dr[0])"
+ ~~~~~~
+ CategoryInfo : InvalidOperation: (:) [], RuntimeException
+ FullyQualifiedErrorId : NullArray
Cannot index into a null array.
At Untitled2.ps1:19 char:43
+ Write-Host "$($dr[0])"
+ ~~~~~~
+ CategoryInfo : InvalidOperation: (:) [], RuntimeException
+ FullyQualifiedErrorId : NullArray
你能帮我理解原因吗。
答案 0 :(得分:1)
可能会发生错误,因为$dr
有时为空(或$null
更具体)。
您要求PowerShell返回$DR
的第0个元素,并且这样做是假设它始终是一个数组(或者可以通过Array索引访问的其他一些数据类型)。该错误告诉您,在两次迭代中,它没有第0个数组元素,因为它是null。
解决这个问题的一种方法是先检查它是否是一个数组。您可以使用-is
:
foreach ($dr in $dt.rows)
{
if ($dr -is [array]){ Write-Host $dr[0] }
}