如何在PowerShell中需要命令行参数(而不是参数)?

时间:2015-02-26 14:01:47

标签: powershell command-line-arguments powershell-v1.0

与:How to handle command-line arguments in PowerShell

不同

在PowerShell脚本中处理未命名命令行参数的最佳方法是什么?

例如,我有一个我想以

运行的powershell脚本
.\test.ps1 L3

如果未提供L3,则会出错。我不想将其作为:

运行
.\test.ps1 -lab L3

我目前的剧本:

$args[0] 
如果省略了参数,

不会导致错误。

这看起来很有希望,尚未尝试过: https://technet.microsoft.com/en-us/library/hh847743.aspx *编辑:* 有希望的链接很有用 - 我用它来形成我的所有例子

1 个答案:

答案 0 :(得分:2)

这就是诀窍:

Param
  (
     [parameter(Position=0, Mandatory=$true)]
     [String]
     $LabNumber
  ) 

$LabNumber

这第二个选项很有意思,但我更喜欢上面的Mandatory = $ true,因为如果忘了它,它实际上会提示你输入它。

Param
  (
     [parameter(Position=0)]
     [String]
     $LabNumber=$(throw "LabNumber is required.  Usage Example: .\test.ps1 L3")
  ) 

$LabNumber

并且,由于@alroc喜欢所有参数,因此第二个参数必须命名为:

Param
  (
     [parameter(Position=0, Mandatory=$true)]
     [String]
     $LabNumber,

     [alias("Submissions")] 
     [String]
     $LoginsFilename = "..\logins.txt"
  )
"LabNumber:"+$LabNumber
"LoginsFilename:"+$LoginsFilename