我有一个脚本,我希望用户能够输入字符串或使用我的脚本可以循环的文件(数组)。
可以使用参数吗?
我希望能够做这样的事情
script.ps1 -file c:\users\joerod\desktop\listofusers.txt
或
script.ps1 -name "john doe"
答案 0 :(得分:2)
当然,但是当你使用位置参数时,你需要选择要使用的默认参数集,因为两个参数的类型都是一个字符串,例如:
[CmdletBinding(DefaultParameterSetName="File")]
param(
[Parameter(Position=0, ParameterSetName="File")]
[string]
$File,
[Parameter(Position=0, ParameterSetName="Name")]
[string]
$Name
)
if ($psCmdlet.ParameterSetName -eq "File") {
... handle file case ...
}
else {
... must be name case ...
}
DefaultParameterSetName必不可少的地方是某人指定:
myscript.ps1 foo.txt
如果指定了默认参数名,PowerShell无法告诉应使用哪些参数,因为两个位置0参数都是相同的类型[string]
。无法消除将参数置于哪个参数的歧义。