Обязательный параметр PowerShell зависит от другого параметра
У меня есть функция PowerShell, которая изменяет значения ключа реестра. Код:
param(
[Parameter()] [switch]$CreateNewChild,
[Parameter(Mandatory=$true)] [string]$PropertyType
)
У него есть параметр «CreateNewChild», и если этот флаг установлен, функция создаст свойство ключа, даже если оно не было найдено. Параметр «PropertyType» должен быть обязательным, но только если был установлен флаг «CreateNewChild».
Вопрос в том, как сделать параметр обязательным, но только если был указан другой параметр?
Хорошо, я играл с этим. И это работает:
param(
[Parameter(ParameterSetName="one")]
[switch]$DoNotCreateNewChild,
[string]$KeyPath,
[string]$Name,
[string]$NewValue,
[Parameter(ParameterSetName="two")]
[switch]$CreateNewChild,
[Parameter(ParameterSetName="two",Mandatory=$true)]
[string]$PropertyType
)
Однако это означает, что $ KeyPath, $ Name и $ NewValue больше не являются обязательными. Установка параметра «один» в обязательное значение нарушает код («набор параметров не может быть разрешен» ошибка). Эти наборы параметров сбивают с толку. Я уверен, что есть способ, но я не могу понять, как это сделать.