这可能是一个愚蠢的问题,所以请原谅我。 我使用过许多 cmdlet,它们都有一个被命名为单个对象的参数,但它接受多个对象。
这对我来说是有意义的,因为参数被单独命名。 例如:
Process-VM -VMName
但是,我正在编写自己的函数,可以执行相同的操作;采用单一对象或集合,但我在单一命名参数的语义上遇到了麻烦。
例如,我的函数接受一个或多个虚拟机。 通常对于这样的集合,我会使用 foreach 循环来枚举它们,它看起来像
foreach ($vm in $VMNames)
但是如果我单独写参数,它会看起来像:
foreach ($vm in $VMName)
为了使 foreach 对我有意义,我的参数必须以复数形式命名,但是当我传递单个对象时,函数调用对我来说看起来很愚蠢。 Ofc 这也不同于其他众所周知的 cmdlet。
Process-VM -VMNames "myvm"
我觉得这个问题很愚蠢,但我很好奇像 Microsoft 及其 cmdlet 这样的人是如何处理这个问题的。
蒂亚
在您的情况下,使用复数是合乎逻辑的,列表中的单个条目是一种特殊情况。 IOW 你的 vmnames 数组仍然是一个数组,只是一个只有 1 个元素的数组。