我需要为命令行指定3个参数来执行不同的操作
1)
command -fwList
将运行一个特定的函数(get-content),它将返回一个防火墙列表,因此不需要任何参数就可以运行
2)
然后这些参数是强制性的,需要一起使用
command -fwName <firewallName> -fwCommand <command>
这是我到目前为止所拥有的,但我如何使它们彼此依赖?
[CmdletBinding()]
Param(
[Parameter(Mandatory=$False)]
[string]$fwList,
[Parameter(Mandatory=$True,Position=1)]
[string]$fwName,
[Parameter(Mandatory=$True,Position=2)]
[string]$fwCommand
)
答案 0 :(得分:2)
做这样的事情:
[CmdletBinding()]
Param(
[Parameter(Mandatory=$False,ParameterSetName='MyParamSetName1')]
[string]$fwList,
[Parameter(Mandatory=$True,ParameterSetName='MyParamSetName2',Position=1)]
[string]$fwName,
[Parameter(Mandatory=$True,ParameterSetName='MyParamSetName2',Position=2)]
[string]$fwCommand
)
答案 1 :(得分:2)
@AgentK很接近,但需要进行一些修正。
首先,Position
参数的要求是它是switch parameter而不是字符串。然后在您的代码中,您可以将Parameter
视为布尔值(至少在大多数情况下;此处存在一些不相关的细微差别)。
其次,[CmdletBinding()]
Param(
[Parameter(Mandatory=$False, ParameterSetName='ListFirewalls', Position=0)]
[switch]$fwList,
[Parameter(Mandatory=$True, ParameterSetName='ProcessFirewalls', Position=0)]
[string]$fwName,
[Parameter(Mandatory=$True, ParameterSetName='ProcessFirewalls', Position=1)]
[string]$fwCommand
)
属性的setContentView(R.layout.activity_main);
参数在每个参数集上重新开始,为0;您不希望使用位置1处的第一个参数启动参数集。
setContentView