表Datarow无法索引到null数组 - powershell

时间:2017-09-08 13:21:20

标签: database powershell

我有以下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

你能帮我理解原因吗。

1 个答案:

答案 0 :(得分:1)

可能会发生错误,因为$dr有时为空(或$null更具体)。

您要求PowerShell返回$DR的第0个元素,并且这样做是假设它始终是一个数组(或者可以通过Array索引访问的其他一些数据类型)。该错误告诉您,在两次迭代中,它没有第0个数组元素,因为它是null。

解决这个问题的一种方法是先检查它是否是一个数组。您可以使用-is

执行此操作
foreach ($dr in $dt.rows)
{
    if ($dr -is [array]){ Write-Host $dr[0] }
}