无法使用管道将参数发送到PowerShell脚本

时间:2019-06-25 07:23:58

标签: powershell

我正在尝试使用管道将参数发送到PowerShell脚本。

如果我使用标准功能5 | echo,一切正常。但是,当我用脚本myecho.ps1 echo替换标准5 | myecho.ps1时,未显示任何结果。

这是myecho.ps1脚本。

param([string]$str)

echo $str

如何使用管道将参数发送到myecho.ps1脚本?

2 个答案:

答案 0 :(得分:3)

您必须指定$str可以从管道中获取价值(我也在此处添加了Mandatory参数-不一定需要,但很适合该特定脚本):

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

然后您调用该脚本,它应该可以工作(记住文件名前的.\

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

您可以使用Get-Help about_Functions_Advanced_Parameters或其中的online version了解有关高级参数的更多信息。

答案 1 :(得分:3)

您可以在PowerShell中为参数指定其他属性,请参阅有关Parameter Attribute Declaration的MS文档。

根据您的情况,应将属性valuefrompipeline设置为$true

将此代码用于要通过管道传递的参数。

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

注意 您可以通过两种方式在PowerShell中使用管道,即“ ByValue”和“ ByPropertyName”,我建议您看看here以更好地了解它们之间的区别。