【发布时间】:2016-03-31 06:53:45
【问题描述】:
假设您有一个带有可变数量参数的 PowerShell 脚本。您想将任何不是选项的内容视为文件名。在 Bash 中,这很容易:
files=() # Empty array of files
while [ $# -gt 0 ]
do
case "$1" in
-option1) do_option1=true ;;
-option2) option2_flag="$2" shift ;;
*) # Doesn't match anything else
files+=("$1") ;;
esac
shift
done
使用 PowerShell 的 Param() 的等效代码是什么?它对于消除大部分样板解析代码很有用,但我将如何使用它来解析文件?例如,这有效:
Param(
[switch]$Option1,
[string]$Option2,
[string[]]$Files
);
但您必须调用像script.ps1 the,file,names 这样的脚本才能正确解析它。如果您拨打script.ps1 the file names,它将不会被识别。
我也试过$PSBoundParameters,但也没有用。
为什么会发生这种情况,我该如何解决?谢谢!
【问题讨论】:
-
[Parameter(ValueFromRemainingArguments)]
标签: windows bash powershell scripting windows-10