powershell 一个变量中的多个参数

Posted

技术标签:

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

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

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

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

【问题讨论】:

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

【讨论】:

以上是关于powershell 一个变量中的多个参数的主要内容,如果未能解决你的问题,请参考以下文章

Powershell - 文件名中的变量时不支持路径格式

在powershell中展平数组

禁用多个计划任务 - PowerShell

如何使用Powershell脚本中的多个参数执行.Bat

查询结果设置为变量 - powershell

(23)Powershell中的首选项变量