【发布时间】:2009-08-21 02:23:40
【问题描述】:
我正在编写一个可以在管道中间调用的 Cmdlet。使用此 Cmdlet,定义了 ValueFromPipelineByPropertyName 属性的参数,以便 Cmdlet 可以使用管道中先前定义的具有相同名称的参数。
我遇到的悖论是在被覆盖的BeginProcessing() 方法中,我利用了可以从管道中获取其值绑定的参数之一。根据Cmdlet Processing Lifecycle,直到之后 BeginProcessing() 被调用,管道参数的绑定才会发生。因此,如果它们试图在BeginProcessing() 中使用,我似乎无法依赖管道绑定参数。
我考虑过将事情转移到ProcessRecord() 方法。不幸的是,需要进行一次性的、相对昂贵的操作。发生这种情况的最佳位置似乎是在 BeginProcessing() 方法中,以帮助确保它只在管道中发生一次。
一个几个问题围绕这个问题:
- 有没有好的方法解决这个问题? 罢工>
- 这些相同的参数也设置了Mandatory 属性。如果没有 PowerShell 抱怨没有这些必需的参数,我怎么能做到这一点?
提前感谢您的想法。
更新
我意识到我只是不太了解管道绑定参数,因此我提出了问题的第二部分。我误以为管道绑定参数来自管道中执行的 previous Cmdlet。实际上来自通过管道传递的object!我引用了post by Keith Hill 来帮助理解这一点。
【问题讨论】:
标签: powershell powershell-cmdlet