tar*_*jal 1 powershell default-parameters parameter-sets
我正在尝试使用参数集并使用默认参数集。但是默认参数集似乎不适用于我。任何帮助深表感谢。我可以轻松地使用带有默认操作的验证集,但我想知道我在这里做错了什么。
Param([cmdletbinding(DefaultParametersetname="Directory")]
[Parameter(Mandatory=$false,ParameterSetName="File")]
[switch]$file,
[Parameter(Mandatory=$false,ParameterSetName="Directory")]
[switch]$directory,
[Parameter(Mandatory=$false,ParameterSetName="File")]
[Parameter(Mandatory=$false,ParameterSetName="Directory")]
[string]$Source,
[Parameter(Mandatory=$true,ParameterSetName="File")]
[Parameter(Mandatory=$true,ParameterSetName="Directory")]
[string]$DestinationPath,
[Parameter(Mandatory=$false,ParameterSetName="Directory")]
[Parameter(Mandatory=$false,ParameterSetName="File")]
[array]$Servers
PS C:\> Test-Script -Source "c:\somedirectory" -DestinationPath "c:\someotherdirectory"
Run Code Online (Sandbox Code Playgroud)

测试脚本:无法使用指定的命名参数来解析参数集。
在第1行:char:1
+测试脚本-Source“ c:\ somedirectory” -DestinationPath“ c:\ someotherdirectory”
+ ~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~
+ CategoryInfo:InvalidArgument:(:) [测试脚本],ParameterBindingException
+ FullyQualifiedErrorId:AmbiguousParameterSet,测试脚本
该CmdletBinding()属性需要param在param关键字之前紧挨着块之外,否则将被忽略:
[CmdletBinding(DefaultParametersetname="Directory")]
Param(
[Parameter(Mandatory=$false,ParameterSetName="File")]
[switch]$file,
[Parameter(Mandatory=$false,ParameterSetName="Directory")]
[switch]$directory,
[Parameter(Mandatory=$false,ParameterSetName="File")]
[Parameter(Mandatory=$false,ParameterSetName="Directory")]
[string]$Source,
[Parameter(Mandatory=$true,ParameterSetName="File")]
[Parameter(Mandatory=$true,ParameterSetName="Directory")]
[string]$DestinationPath,
[Parameter(Mandatory=$false,ParameterSetName="Directory")]
[Parameter(Mandatory=$false,ParameterSetName="File")]
[array]$Servers
)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1798 次 |
| 最近记录: |