我有一个参数如下:
[Parameter(Mandatory = false, ValueFromPipelineByPropertyName = true)]
[AllowEmptyString()]
[ValidateSet("1", "2", "3", "4", "5", "6", "Critical", "Important", "High", "Medium", "Low", "Lowest")]
public string Priority { get; set; }
当我使用 运行命令时-Priority ""
,它不起作用
我知道我可以跳过参数,但对我来说真正的问题是当我使用 import-csv 中的管道执行命令时
如果我的 csv 没有任何值,Import-Csv 会将我的参数值更新为空,因此我收到以下错误:
Cannot validate argument on parameter 'Priority'. The argument "" does not belong to the set "1,2,3,4,5,6,Critical,Important,High,Med
ium,Low,Lowest" specified by the ValidateSet attribute. Supply an argument that is in the set and then try the command again.
如果我扩展我的验证集以包含“”,则如果单独调用该命令会成功运行,但是如果我将它通过管道传输到Import-Csv
我也尝试过AllowNull
属性,但仍然是同样的错误
更新: 在与 Garath 讨论后,我似乎认为
AllowEmptyString 不起作用,而是在 ValidateSet 中使用“”
这个问题仍然没有答案 - 为什么
[AllowEmptyString()]
不起作用?即使没有值,CSV 文件也必须有逗号
在这里,如果不存在尾随逗号,则将
Import-Csv
null 传递给命令,并且验证失败ValidateSet
当存在尾随逗号时,似乎将空传递给可接受的参数,因为该集合包括“”