Не удается отправить параметры в сценарий PowerShell с использованием каналов - PullRequest
2 голосов
/ 25 июня 2019

Я пытаюсь отправить параметры в сценарий PowerShell, используя каналы.

Если я использую стандартную функцию 5 | echo, то все в порядке.Но когда я заменяю стандартный echo на мой скрипт myecho.ps1 5 | myecho.ps1, результаты не отображаются.

Это скрипт myecho.ps1.

param([string]$str)

echo $str

Как я могу отправить параметры в скрипт myecho.ps1, используя каналы?

Ответы [ 2 ]

3 голосов
/ 25 июня 2019

Вы можете указать другие атрибуты для параметров в PowerShell, посмотрите документацию MS по поводу Объявление атрибутов параметров .

В вашем случае вы должны установить атрибут valuefrompipeline на $true.

Используйте этот код для параметров, которые вы хотите передать по конвейеру.

param(
    [parameter(ValueFromPipeline = $true)]
    [string]$str
)

ПРИМЕЧАНИЕ Вы можете использовать конвейер в PowerShell двумя способами: «ByValue» и «ByPropertyName ", я рекомендую вам взглянуть здесь , чтобы лучше понять разницу между ними.

3 голосов
/ 25 июня 2019

Вы должны указать, что $str может принимать значение из конвейера (я также добавил здесь параметр Mandatory - он не обязательно нужен, но хорошо вписывается в этот конкретный сценарий):

param(
  [Parameter(Mandatory=$true,
  ValueFromPipeline=$true)]
  [string]
  $str
)
echo $str

Затем вы запускаете этот скрипт, и он должен работать (помните о .\ перед именем файла):

PS> "a" |.\myecho.ps1
a

Вы можете узнать больше о дополнительных параметрах, используя Get-Help about_Functions_Advanced_Parameters или в онлайн-версии .

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