我正在尝试使用管道将参数发送到PowerShell脚本。
如果我使用标准功能5 | echo
,一切正常。但是,当我用脚本myecho.ps1 echo
替换标准5 | myecho.ps1
时,未显示任何结果。
这是myecho.ps1脚本。
param([string]$str)
echo $str
如何使用管道将参数发送到myecho.ps1脚本?
答案 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以更好地了解它们之间的区别。