在PowerShell中使用数字作为switch参数

时间:2016-10-11 10:54:51

标签: powershell parameters

我正在尝试构建一个很酷的“PowerShell命令”(一个包含全局函数的脚本,我以后可以在shell中使用它作为命令),我有一个问题。

我正在使用param()的参数,并且有一个选项可以使用切换参数(一个不会获得后续信息但稍后仅用于选项的参数 - 例如-l处的参数Linux命令ls)。

事情是,当参数名称是字母时,它可以正常工作,但不能使用数字。这很奇怪,因为数字可以定义为变量($4)。

我需要做什么?

它假设像ping -6

想法?

1 个答案:

答案 0 :(得分:4)

您提出的要求是不可能的,正如Mathias在评论中指出的那样。

来自language specification的§2.3.4:

  

2.3.4参数

     

<强>语法:

command-parameter:
    dash   first-parameter-char   parameter-chars   colonopt
first-parameter-char:
    A Unicode character of classes Lu, Ll, Lt, Lm, or Lo
    _   (The underscore character U+005F)
    ?
…

你得到的最接近的是:

Param(
  [Parameter(Mandatory=$false)]
  [Switch]$_7
)

然而,对于你的场景,这样的东西无论如何都会更具可读性:

Param(
  [Parameter(Mandatory=$false)]
  [ValidateSet(3,5,7)]
  [int]$Mode = 7
)
相关问题