Powershell仅当调用函数的对象具有特定属性时才允许参数

时间:2014-05-01 14:56:23

标签: powershell parameters

我想知道当正在使用的对象具有特定属性时,是否可以为隐藏自身的函数指定参数

例如,如果我们有

Function Do-Something
{
 Param(
  [HideIfObjectHasPropertyNamed("NoPath")]
  [string] $Path
 )    
 ...
}

如果我有两个对象Test1和Test2

Test1将NoPath作为属性 Test2没有

所以当我写出来

Test1 | Do-Something -

在破折号之后,我希望可能参数的智能感知列表中的路径完全丢失

但是有了这个

Test2 | Do-Something -Path

我希望Path成为可用选项

显然我知道HideIfObjectHasPropertyNamed不是一个有效的参数属性我想知道现有参数属性是否有办法完成同样的事情。

我还在学习Powershell的细节,而且我不了解参数的所有细微差别。如果这是不可能的,那么它会让一个cmdlet更友好地传递给其他用户。

1 个答案:

答案 0 :(得分:0)

我认为您可以使用动态参数来实现此功能。

试试get-help about_functions_advanced_parameters。最后介绍了动态参数,并提供了一些有用的示例。