与: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 *编辑:* 有希望的链接很有用 - 我用它来形成我的所有例子
答案 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