Как передать общие параметры командной строки powershell между командлетами в конвейере? - PullRequest
2 голосов
/ 22 января 2010

Скажем, у меня есть два командлета, 'new-foo' и 'do-bar'. Оба командлета должны пройти проверку подлинности в службе, чтобы выполнить свое действие, и «do-bar» принимает foo. Сегодня я могу сделать:

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

И я могу сделать:

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

И я могу даже связать их, передавая foo по конвейеру, например ::100100

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

Но я не могу понять, как передать общие параметры, такие как местоположение службы и учетные данные между элементами конвейера. Если у меня есть несколько командлетов, соединенных вместе, я хотел бы только передать учетные данные в первый раз, а затем использовать их для остальной части конвейера.

Чего мне не хватает, похоже, это должно быть очевидно ...

Ответы [ 3 ]

1 голос
/ 22 января 2010

Вы можете заставить New-Foo выплюнуть объект, который содержит как оригинальный объект, который интересует do-bar, так и местоположение службы и учетные данные в качестве свойств. Примите этот объект как параметр, а затем извлеките необходимые данные , если , то пользователь не предоставит параметры ServiceLocation или Credential.

0 голосов
/ 03 апреля 2013

Вы разрабатываете эти командлеты или просто используете их в своих скриптах? Если вы пишете эти командлеты на любом языке ООП, я думаю, что способ сделать это состоит в том, чтобы у вас был базовый класс командлетов, и все остальные командлеты должны расширять этот базовый класс командлетов. В этом случае базовый класс командлетов должен инициализировать объект, в котором хранятся ваши учетные данные, и иметь командлет для запроса учетных данных, которые инициализируют объект. Поэтому все остальные командлеты, расширяющие базовый класс, могут искать учетные данные в этом объекте.

0 голосов
/ 22 января 2010

делает Get-Credential покрытие вам нужно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...