Powershell 输出奇怪的输出

Powershell outputs strange output

我正在创建一个函数来创建自定义对象,我对 powershell 还比较陌生。 问题是 - 我在 powershell 命令中得到了我不想要的数字,我认为我做错了。

我做错了什么吗?

function Create_object{
    [System.Collections.ArrayList]$global:combo1_info = @()
    $combo1_query = QR "SELECT DISTINCT company FROM machine"
    if ($combo1_query.Text.Length -gt 0){
        $a = 0
        $combo1_query | ForEach-Object{
            $obj = [PSCustomObject]@{
                Id = $a
                Company = $_.company
            }
            $script:combo1_info.Add($obj)
            $a = $a + 1
        }
    }
}

我得到的输出是:

0
1
2
3
4
5
6
7
8
9
10

当我执行 $combo1_info | Format-Table -Wrap 时,我得到了正确的 table,但不知道为什么当它由 "$script:combo1_info.Add($obj)"

创建时我得到了前导数字

PS : 自定义 function QR SELECT DISTINCT company FROM machine 工作正常。

首先尽量不要使用全局变量。其次,当你有一个动态数组时,你应该使用 List。该数组用于固定大小的数组。

像这样:

$combo1_info = New-Object System.Collections.Generic.List[System.Object]
$combo1_info.Add($obj)
 # If you really want an array just covert it
$combo1_info.ToArray()

您的函数将如下所示:

function Create_object{
    $combo1_info = New-Object System.Collections.Generic.List[System.Object]
    $combo1_query = QR "SELECT DISTINCT company FROM machine"
    if ($combo1_query.Text.Length -gt 0){
        $a = 0
        $combo1_query | ForEach-Object{
            $obj = [PSCustomObject]@{
                Id = $a
                Company = $_.company
            }
            combo1_info.Add($obj)
            $a = $a + 1
        }
    }
    $combo1_info.ToArray()
    return $combo_info
}

如果你真的真的......真的想使用你的代码,你可以添加 $null 来抑制输出(输出在那里显示数组的大小):

$script:combo1_info.Add($obj) | $null