4

我很难考虑清楚。如果我希望所有声明的参数在设置时都需要显式命名,并且我想从 $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 的值...我该怎么做?

4

1 回答 1

5

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

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

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

于 2013-09-18T00:19:59.857 回答