如何在管道上的cmdlet之间传递常见的PowerShell命令行参数?

时间:2010-01-22 19:05:56

标签: powershell powershell-v2.0 cmdlets cmdlet

说我有两个cmdlet,'new-foo'和'do-bar'。两个cmdlet都需要对服务进行身份验证才能执行其操作,并且“do-bar”需要foo。今天,我可以做到:

new-foo -host localhost -username user -password password -whateverOtherArgs

我能做到:

do-bar -host localhost -username user -password password -foo myFoo

我甚至可以链接他们在管道上传递foo,例如:

new-foo <blah blah> | do-bar -host localhost -username user -password password

但我无法弄清楚如何传递公共参数,例如服务位置和管道元素之间的凭证。如果我有一堆链接在一起的cmdlet,我只想在第一次传递凭据,然后重新使用那些用于管道的其余部分。

我错过了什么,似乎这应该是显而易见的......

3 个答案:

答案 0 :(得分:1)

你可以让New-Foo吐出一个对象,该对象包含do-bar感兴趣的原始对象以及服务位置和作为属性的凭据。接受此对象作为参数,然后拔出所需的数据如果用户未提供ServiceLocation或Credential参数。

答案 1 :(得分:0)

Get-Credential满足您的需求。

答案 2 :(得分:0)

您是在开发此cmdlet,还是只是在脚本中使用它们? 如果您使用任何OOP语言编写这些cmdlet,我认为一种方法是使用基本cmdlet类,并且每个其他cmdlet都应该扩展该基本cmdlet类。在这种情况下,基本cmdlet类应初始化存储凭据的对象,并具有要求凭据的cmdlet,以初始化对象。因此,扩展基类的每个其他cmdlet都可以在此对象中查找凭据。