如何强制声明的参数需要显式命名?

时间:2013-09-17 23:46:28

标签: powershell

我很难想到这一点。如果我希望所有声明的参数在设置时需要显式命名,并且我想从$ 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

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

1 个答案:

答案 0 :(得分:5)

好吧,想通了。声明如下:

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

感谢@latkin,他已经在Powershell non-positional, optional params

回答了这个问题