Обязательный параметр 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 больше не являются обязательными. Настройка »один" параметр, установленный в обязательном порядке, нарушает код ("набор параметров не может быть решен " ошибка). Эти наборы параметров сбивают с толку. Я'Я уверен, что есть способ, но я могуне могу понять, как это сделать.

Ответы на вопрос(2)

Ваш ответ на вопрос