我目前正在为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(基本上,前两个参数还没有已被绑定)。所以基本上,我可以以某种方式阻止参数从位置绑定任意数量的参数吗?
答案 0 :(得分:1)
试试这个param decl:
function Svn-Info {
[CmdletBinding()]
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, Position=0)]
[String[]]
$targetsAtRev
)