Function Powershell:返回函数中没有行的数据表
我正在编写一个脚本,在这个脚本中我创建了许多自定义数据表,出于这个原因,我想创建一个函数来为我生成这些表。具体来说,我希望函数创建表和表的列,然后返回该表,以便调用函数可以向返回的表中添加行元素。然而,每当我返回一个没有行的表时,我被告知我不能向其中添加行,因为元素是空的。以下是我迄今为止所尝试的:Function Powershell:返回函数中没有行的数据表,function,powershell,return,rows,Function,Powershell,Return,Rows,我正在编写一个脚本,在这个脚本中我创建了许多自定义数据表,出于这个原因,我想创建一个函数来为我生成这些表。具体来说,我希望函数创建表和表的列,然后返回该表,以便调用函数可以向返回的表中添加行元素。然而,每当我返回一个没有行的表时,我被告知我不能向其中添加行,因为元素是空的。以下是我迄今为止所尝试的: Function Generate-Table ($Name, [String[]]$ColumnNames, [Type[]]$DataTypes) { $table = New-Obje
Function Generate-Table ($Name, [String[]]$ColumnNames, [Type[]]$DataTypes) {
$table = New-Object system.Data.DataTable "$Name"
for ($i = 0; $i -lt $ColumnNames.Length; $i++) {
$col = New-Object system.Data.DataColumn $ColumnNames[$i],($DataTypes[$i])
$table.columns.add($col)
}
return $table
}
$ColumnNames = @("Name", "Age")
$DataTypes = @([string], [int])
$table = Generate-Table "OutputTable" $ColumnNames $DataTypes
$row = $table.NewRow();
$row.Name = "Bob"
$row.Age = "20"
$table.Rows.Add($row);
$table
这给了我一个错误:
You cannot call a method on a null-valued expression.
At C:\Users\mrpadmin\accounting\test.ps1:15 char:21
+ $row = $table.NewRow <<<< ();
+ CategoryInfo : InvalidOperation: (NewRow:String) [], RuntimeException
+ FullyQualifiedErrorId : InvokeMethodOnNull
它正确地为我提供了以下输出:
Name Age
---- ---
Bob 20
有没有办法返回没有行的数据表对象?如果没有,是否有其他方法可以使函数返回准备好用行填充的数据表?我认为您的问题可以通过在返回的表前面使用一元逗号运算符来解决:
return ,$table
Powershell对实现IEnumerable的集合进行了一些有趣的自动展开。逗号操作符将把您的表包装在一个对象数组中,因此当它自动展开时,它将返回到表中。我不知道有什么办法可以强迫Powershell不这么做
这是对的参考。这非常有效,非常感谢。我自己永远也不会想到这一点。
return ,$table