【问题标题】:How do I force declared parameters to require explicit naming?如何强制声明的参数需要显式命名?
【发布时间】:2013-09-22 14:11:23
【问题描述】:

我很难考虑清楚这一点。如果我希望所有声明的参数在设置时都需要显式命名,并且我想从 $args 变量中获取任何未命名的内容,我该怎么做?

如果我的脚本声明了以下参数:

param($installdir, $compilemode, $whatever) 

然后传递一个文件列表(在这种情况下,我不想指定安装目录、编译模式等)前三个参数会吞噬我的参数。所以,我想通过:

c:\> MyScript file-1.cs file-2.cs file-3.cs file-4.cs 

让所有 4 个字符串都出现 $args,或者调用:

c:\> MyScript -CompileMode simple file-1.cs -InstallDir c:\temp file-2.cs

并使用包含 2 个文件的 $args 获取 $compilemode 和 $installdir 的值...我该怎么做?

【问题讨论】:

  • 每个参数的位置会固定吗?
  • 我不确定我是否关心我声明的参数是否固定,因为调用者必须命名它们(这是我所希望的)
  • 我上面链接的文章似乎很好地涵盖了这一点。
  • 我读过。它根本没有解决我的问题

标签: powershell


【解决方案1】:

好的,想通了。像这样声明:

param(
   $installdir, 
   $compilemode, 
   $whatever, 
   [Parameter(Position=0, ValueFromRemainingArguments=$true)] $args
   )

感谢@latkin,他已经回答了这个问题:Powershell non-positional, optional params

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-05-01
  • 1970-01-01
  • 2013-07-06
  • 1970-01-01
相关资源
最近更新 更多