我目前正在为 Powershell v2.0 中的 Subversion 命令行编写一个包装器。我希望能够尽可能地遵循命令行的工作方式。所以,例如,我想要“svn info”命令:
info: Display information about a local or remote item.
usage: info [TARGET[@REV]...]
Print information about each TARGET (default: '.').
TARGET may be either a working-copy path or URL. If specified, REV
determines in which revision the target is first looked up.
Valid options:
-r [--revision] ARG : ARG (some commands also take ARG1:ARG2 range)
A revision argument can be one of:
NUMBER revision number
'{' DATE '}' revision at start of the date
'HEAD' latest in repository
'BASE' base rev of item's working copy
'COMMITTED' last commit at or before BASE
'PREV' revision just before COMMITTED
-R [--recursive] : descend recursively, same as --depth=infinity
--depth ARG : limit operation by depth ARG ('empty', 'files',
'immediates', or 'infinity')
--targets ARG : pass contents of file ARG as additional args
--incremental : give output suitable for concatenation
--xml : output in XML
--changelist [--cl] ARG : operate only on members of changelist ARG
Global options:
--username ARG : specify a username ARG
--password ARG : specify a password ARG
--no-auth-cache : do not cache authentication tokens
--non-interactive : do no interactive prompting
--trust-server-cert : accept SSL server certificates from unknown
certificate authorities without prompting (but only
with '--non-interactive')
--config-dir ARG : read user configuration files from directory ARG
--config-option ARG : set user configuration option in the format:
FILE:SECTION:OPTION=[VALUE]
For example:
servers:global:http-library=serf
...映射到一个函数,如下所示:
function Svn-Info {
param(
$revision,
$depth,
$targets,
$incremental,
$changelist,
$username,
$password,
$no_auth_cache,
$non_interactive,
$trust_server_cert,
$config_dir,
$config_option,
[Parameter(Mandatory=$false,ValueFromRemainingArguments=$true)]
[String[]]
$targetsAtRev
)
我想这样称呼它:
Svn-Info "D:\svn\"@25345 "D:\svn\common\"@35922 -username MyUserName -password MyPassword
不幸的是,它试图将前两个参数绑定到 $revision 和 $depth(基本上,前两个参数尚未绑定)。所以本质上,我可以以某种方式阻止参数在位置上绑定任意数量的参数吗?