Powershell参数字符串或文件

时间:2014-06-23 20:17:39

标签: powershell parameters

我有一个脚本,我希望用户能够输入字符串或使用我的脚本可以循环的文件(数组)。

可以使用参数吗?

我希望能够做这样的事情

script.ps1 -file c:\users\joerod\desktop\listofusers.txt 

script.ps1 -name "john doe"

1 个答案:

答案 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]。无法消除将参数置于哪个参数的歧义。