Mam funkcję PowerShell, która zmienia wartości kluczy rejestru. Kod:Parametr obowiązkowy PowerShell zależy od innego parametru
param(
[Parameter()] [switch]$CreateNewChild,
[Parameter(Mandatory=$true)] [string]$PropertyType
)
Ma parametr „CreateNewChild” i jeśli flaga jest ustawiona, funkcja stworzy właściwość klucza, nawet jeśli to wa nie znaleziono. Parametr "PropertyType" musi być obowiązkowy, ale tylko wtedy, gdy ustawiono opcję "CreateNewChild".
Pytanie brzmi, jak ustawić parametr jako obowiązkowy, 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, $ Nazwa i $ NewValue nie są już obowiązkowe. Ustawienie "jednego" zestawu parametrów na obowiązkowe powoduje przerwanie kodu (zestaw parametrów nie może być rozwiązany błąd). Te zestawy parametrów są mylące. Jestem pewien, że jest sposób, ale nie mogę wymyślić, jak to zrobić.
Ja próbowałem, oto kod: 'param ( [parametr (pozycja = 0, Obowiązkowe = $ true) ] [string] $ KeyPath, [Parametr (pozycja = 1, obowiązkowa = $ prawda)] [ciąg] $ nazwa, [parametr (pozycja = 2, obowiązkowa = $ prawda)] [ciąg] $ nowaWartość, [parametr (ParameterSetName = "One")] [przełącznik] $ CreateNewChild, [Parametr (ParameterSetName = " One ", Mandatory = $ true)] [string] $ PropertyType ) ' Jednak to nie działa. Podczas próby wykonania: 'Set-RegistryKeyPropertyValue -KeyPath $ ścieżka -Nazwa $ name -NewValue 0' Prosi mnie o podanie wartości dla $ PropertyType, ponieważ jest to obowiązkowe – lime
Przepraszam, powinienem być bardziej szczegółowy. Dodałem lepszy przykład do powyższej odpowiedzi. :) –
Tak, właśnie tego szukałem! Dziękuję Ci! p.s. Jedna opcja, której nie próbowałem uczynić "$ Favourite" obowiązkową = $ false, domyślam się, że była ona fałszywa. Ta logika zestawu parametrów jest dziwna ... – lime