Parametr obowiązkowy PowerShell zależy od innego parametru

Mam funkcję PowerShell, która zmienia wartości kluczy rejestru. Kod:

param(
    [Parameter()] [switch]$CreateNewChild,
    [Parameter(Mandatory=$true)] [string]$PropertyType
)

Ma parametr „CreateNewChild”, a jeśli ta flaga jest ustawiona, funkcja utworzy właściwość klucza, nawet jeśli nie została znaleziona. Parametr „PropertyType” musi być obowiązkowy, ale tylko wtedy, gdy została ustawiona flaga „CreateNewChild”.

Pytanie brzmi, jak uczynić parametr obowiązkowym, ale tylko wtedy, gdy określono inny parametr?

OK, bawiłem się z tym. I to działa:

param(
  [Parameter(ParameterSetName="one")]
  [switch]$DoNotCreateNewChild,

  [string]$KeyPath,

  [string]$Name,

  [string]$NewValue,

  [Parameter(ParameterSetName="two")]
  [switch]$CreateNewChild,

  [Parameter(ParameterSetName="two",Mandatory=$true)]
  [string]$PropertyType
)

Oznacza to jednak, że $ KeyPath, $ Name i $ NewValue nie są już obowiązkowe. Ustawienie parametru „jeden” na obowiązkowy przerywa kod („zestawu parametrów nie można rozwiązać” błąd). Te zestawy parametrów są mylące. Jestem pewien, że istnieje sposób, ale nie potrafię wymyślić, jak to zrobić.

questionAnswers(2)

yourAnswerToTheQuestion