【问题标题】:powershell multiple arguments in one variablepowershell 一个变量中的多个参数
【发布时间】:2016-11-25 17:08:53
【问题描述】:

我想让可变数量的参数进入一个变量 script.ps1 first -second a -third b

我想要的是让“first -second a -third b”都在一个变量中。

如果不将所有参数作为一个字符串传递,这可能吗?

【问题讨论】:

  • 考虑到你说你不想要一个字符串,你能澄清你在问什么吗?意思是你试图传递这些并将它们分配给单个哈希表对象,将它们分配为params,将它们直接传递给起始函数(作为参数),还是其他什么?
  • 您在寻找$args吗?这样做的目的是什么?为什么不能简单地使用可选参数?
  • 我想调用一个脚本(有点像父级),然后根据第一个参数盲目地将其余参数传递给另一个脚本。所以我也想要“-params”

标签: powershell


【解决方案1】:

您可以在一个变量的Parameter 属性中使用ValueFromRemainingArguments option

script.ps1

param(
  [Parameter(Mandatory=$true,ValueFromRemainingArguments=$true)]
  [psobject[]]$InputObject
)

foreach($value in $InputObject)
{
  Write-Host $value
}

现在您可以提供任意数量的参数:

PS C:\> .\script.ps1 many arguments can go here
many
arguments
can
go
here

【讨论】:

    【解决方案2】:

    如果您想将列表中的第一个参数视为子命令并将其余参数传递给其他函数/cmdlet,我只需 split'n'splat automatic variable $args ,例如像这样:

    $subcommand, $params = $args
    
    switch ($subcommand) {
      'foo'   { Do-Some @params }
      'bar'   { Do-Other @params }
      default { Write-Error "Unknown subcommand: $_" }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-01-10
      • 2017-09-22
      • 1970-01-01
      • 2014-12-16
      • 2014-08-30
      • 2023-03-22
      • 2011-12-09
      • 1970-01-01
      相关资源
      最近更新 更多