Я пытаюсь написать простую скрипту с использованием наборов параметров, чтобы упростить ввод и проверку. Я хотел бы сценарий, чтобы выглядеть следующим образом:Множественные наборы параметров не работают
.\zipandrotate.ps1 -Zip [-AllButDays <int>] -Rotate [-MaxRetentionDays <int>]
-Zip
и поэтому -AllButDays
являются обязательными как -Rotate
и -MaxRetentionDays
.
Я попытался установить параметр по умолчанию для zip, но это не сработало. Я бы хотел, чтобы это разрешило выполнение: просто застежка-молния, просто поверните или застегните и поверните.
[CmdletBinding(DefaultParameterSetBame="zip")]
param(
[Parameter(Mandatory=$false, ParameterSetName="zip")]
[Switch]$Zip,
[Parameter(Mandatory=$true, ParameterSetName="rotate")]
[Switch]$Rotate,
[Parameter(ParameterSetName="zip", Mandatory=$true)]
[int]$AllButDays,
[Parameter(ParameterSetName="rotate", Mandatory=$false)]
[int]$MaxRetentionDays
)
Я получаю следующее сообщение об ошибке в PowerShell 5 (Windows 10) и PowerShell 4 (Windows 7):
PS C:\>.\zipandrotate.ps1 -Zip -AllButDays 2 -Rotate -MaxRetentionDays 2 C:\zipandrotate.ps1 : Parameter set cannot be resolved using the specified named parameters. At line:1 char:1 + .\zipandrotate.ps1 -Zip -AllButDays 2 -Rotate -MaxRetentionDays 2 + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : InvalidArgument: (:) [zipandrotate.ps1], ParameterBindingException + FullyQualifiedErrorId : AmbiguousParameterSet,zipandrotate.ps1
Запуск команды тремя разными способами говорит мне проблема в попытке использовать -Zip
и -Rotate
в то же время.
работы:
.\zipandrotate.ps1 -zip -allbutdays 2
.\zipandrotate.ps1 -rotate -maxretentiondays 90
не работает:
.\zipandrotate.ps1 -zip -allbutdays 2 -rotate -maxretentiondays 90
Итак, есть 4 пути я вижу, мой сценарий происходит:
Разрешено: Просто застежка-молния, просто повернуть, оба
Не разрешено: Нет
Любые советы о том, как я получаю там? Добавление третьего набора параметров изменило ситуацию. Только -Zip
и -Rotate
работал; индивидуальное использование больше не имело каких-либо уникальных случаев, чтобы определить, какой набор параметров они были. Есть ли способ получить функциональность, я хочу удалить необходимость в дополнительном параметре для запуска -Zip
или -Rotate
?
Если это единственное требуемое значение, можете ли вы просто объединить каждый набор? '-ZipAllButDays: 2'? – Eris