Powershell 使参数组成为必需的
如何使PowerShell脚本接受0或3个参数?要么全有,要么一无所有Powershell 使参数组成为必需的,powershell,arguments,Powershell,Arguments,如何使PowerShell脚本接受0或3个参数?要么全有,要么一无所有 [CmdletBinding()] Param( # Name of VPN connection [Parameter(Mandatory=$False,ValueFromPipeline=$True,Position=1)] [string]$vpn_name, # Server URL or IP [Parameter(Mandatory=$False,ValueFromPip
[CmdletBinding()]
Param(
# Name of VPN connection
[Parameter(Mandatory=$False,ValueFromPipeline=$True,Position=1)]
[string]$vpn_name,
# Server URL or IP
[Parameter(Mandatory=$False,ValueFromPipeline=$True,Position=2)]
[string]$vpn_server,
# 192.168.72.0/24
[Parameter(Mandatory=$False,ValueFromPipeline=$True,Position=3)]
[string[]]$target_nets
)
试试这个
Param(
[Parameter(Mandatory=$True, Position=0, ParameterSet="FirstSet")]
[string]FirstRequiredParam,
[Parameter(Mandatory=$False, Position=0, ParameterSet="SecondSet")]
[string]FirstNotRequiredParam
)
试试这个
Param(
[Parameter(Mandatory=$True, Position=0, ParameterSet="FirstSet")]
[string]FirstRequiredParam,
[Parameter(Mandatory=$False, Position=0, ParameterSet="SecondSet")]
[string]FirstNotRequiredParam
)
这是一个简化的代码片段
[CmdletBinding()]
Param(
# Name of VPN connection
[Parameter(Mandatory=$True, ParameterSetName="WithParams")]
[string]$name,
# Server URL or IP
[Parameter(Mandatory=$True, ParameterSetName="WithParams"))]
[string]$vpn_server,
# No params
[Parameter(Mandatory=$False,ValueFromPipeline=$True,Position=0, ParameterSetName="NoParams")]
[string]$none
)
# Then check what parameters set was passed
switch ($PsCmdlet.ParameterSetName){
"WithParams" { Write-Host $name; break}
"NoParams" { Write-Host "No params passed."; break }
}
这是一个简化的代码片段
[CmdletBinding()]
Param(
# Name of VPN connection
[Parameter(Mandatory=$True, ParameterSetName="WithParams")]
[string]$name,
# Server URL or IP
[Parameter(Mandatory=$True, ParameterSetName="WithParams"))]
[string]$vpn_server,
# No params
[Parameter(Mandatory=$False,ValueFromPipeline=$True,Position=0, ParameterSetName="NoParams")]
[string]$none
)
# Then check what parameters set was passed
switch ($PsCmdlet.ParameterSetName){
"WithParams" { Write-Host $name; break}
"NoParams" { Write-Host "No params passed."; break }
}
接近工作解决方案。应该是
ParameterSetName
`它可以工作?`是的。非常感谢。我找到了更多信息。接近工作解决方案。应该是ParameterSetName
`它可以工作?`是的。非常感谢。我找到了更多的信息。