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
我正在创建一个函数来创建自定义对象,我对 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