Набор параметров по умолчанию для Powershell не работает. ошибка
Я пытаюсь использовать набор параметров и использовать набор параметров по умолчанию. Но набор параметров по умолчанию не работает для меня. Буду признателен за любую оказанную помощь. Я могу легко использовать набор проверки с действием по умолчанию, но я хочу знать, что я делаю здесь неправильно.
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"
Test-Script: набор параметров не может быть разрешен с использованием указанных именованных параметров.
В строке:1 символ:1
+ Test-Script -Source "c: \ somedirectory" -DestinationPath "c: \ someotherdirectory"
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo: InvalidArgument: (:) [Test-Script], ParameterBindingException
+ FullyQualifiedErrorId: AmbiguousParameterSet, Test-Script
1 ответ
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
)