PowerShell 函数不会返回对象
Posted
技术标签:
【中文标题】PowerShell 函数不会返回对象【英文标题】:PowerShell function won't return object 【发布时间】:2011-02-27 00:18:10 【问题描述】:我有一个创建通用列表的简单函数:
function test()
$genericType = [Type] "System.Collections.Generic.List``1"
[type[]] $typedParameters = ,"System.String"
$closedType = $genericType.MakeGenericType($typedParameters)
[Activator]::CreateInstance($closedType)
$a = test
问题是$a
无论我尝试什么都始终为空。如果我在函数之外执行相同的代码,它可以正常工作。
想法?
【问题讨论】:
【参考方案1】:恕我直言,这是陷阱 #1。如果您从函数返回一个以某种方式可枚举的对象(我不确切知道实现IEnumerable
是否是唯一的情况),PowerShell 会展开该对象并返回其中的项目。
您新创建的列表是空的,因此没有返回任何内容。为了让它工作,只需使用这个:
,[Activator]::CreateInstance($closedType)
这将创建一个展开的单项数组,并将该项(通用列表)分配给$a
。
更多信息
以下是类似问题的列表,可帮助您了解正在发生的事情:
Powershell pitfalls Avoiding Agnostic Jagged Array Flattening in Powershell Strange behavior in PowerShell function returning DataSet/DataTable What determines whether the Powershell pipeline will unroll a collection?注意:你不需要用括号声明函数头。如果需要添加参数,函数如下所示:
function test
param($myParameter, $myParameter2)
或
function
param(
[Parameter(Mandatory=true, Position=0)]$myParameter,
... again $myParameter2)
...
【讨论】:
逗号!哦。谢谢,这些天我会做对的。【参考方案2】:使用泛型的更简单方法。虽然这并没有直接解决 [Activator] 方法
Function test
New-Object "system.collections.generic.list[string]"
(test).gettype()
【讨论】:
以上是关于PowerShell 函数不会返回对象的主要内容,如果未能解决你的问题,请参考以下文章
定义接受 PSCredential 对象的 Powershell 函数,但如果它为空则不会提示?
python使用numpy的np.power函数计算numpy数组中每个数值的指定幂次(例如平方立方)np.power函数默认返回整数格式np.float_power函数默认返回浮点数
python使用numpy的np.float_power函数计算numpy数组中每个数值的指定幂次(例如平方立方)np.power函数默认返回整数格式np.float_power函数返回浮点数