Powershell输出奇怪的输出

时间:2018-09-20 10:02:55

标签: powershell object add

我正在创建一个创建自定义对象的函数,而我对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时,我得到了正确的表格,但是不知道为什么在"$script:combo1_info.Add($obj)"创建它的时候会得到前导数字

PS:自定义function QR SELECT DISTINCT company FROM machine正常运行。

1 个答案:

答案 0 :(得分:2)

首先尝试不使用全局变量。其次,当您拥有动态数组时,应使用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