【问题标题】:Can't send parameters to PowerShell script using pipes无法使用管道将参数发送到 PowerShell 脚本
【发布时间】:2019-06-25 07:23:58
【问题描述】:

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

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

这是 myecho.ps1 脚本。

param([string]$str)

echo $str

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

【问题讨论】:

标签: powershell


【解决方案1】:

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

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

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

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

您可以使用Get-Help about_Functions_Advanced_Parametersonline version 了解有关高级参数的更多信息。

【讨论】:

    【解决方案2】:

    您可以在 PowerShell 中为参数指定更多属性,请查看有关 Parameter Attribute Declaration 的 MS 文档。

    在您的情况下,您应该将属性valuefrompipeline 设置为$true

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

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

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

    【讨论】:

      猜你喜欢
      • 2019-02-16
      • 1970-01-01
      • 1970-01-01
      • 2018-11-21
      • 2018-04-04
      • 2013-03-09
      • 2017-03-09
      • 1970-01-01
      • 2017-04-10
      相关资源
      最近更新 更多