传入空集会引发错误

时间:2015-03-10 20:30:51

标签: powershell set hashset powershell-v4.0

我正在尝试根据this回答在我的powershell脚本中使用HashSet

Add-Type -AssemblyName System.Core
$set= new-object 'System.Collections.Generic.HashSet[string]'

但是如果我创建一个期望这样的集合的函数

function foo([Parameter(Mandatory=$true)][Collections.Generic.HashSet[string]]$set){

并传入集合

foo($set)

如果$set为空,我会收到错误:

Cannot bind argument to parameter '$set' because it is an empty collection.
    + CategoryInfo          : InvalidData: (:) [script.ps1], ParameterBindingValidationException
    + FullyQualifiedErrorId : ParameterArgumentValidationErrorEmptyCollectionNotAllowed,script.ps1

但如果我事先向$set添加内容,我就不会遇到问题。

为什么参数不能绑定到空集,我怎样才能将它绑定到这样的集合?

1 个答案:

答案 0 :(得分:3)

您可以使用AllowEmptyCollection属性将该函数标记为允许空HashTable:

function foo([Parameter(Mandatory=$true)][AllowEmptyCollection()][Collections.Generic.HashSet[string]]$set)