ho una funzione PowerShell che prende una stringa, e tre interruttori. così l'invocazione sarebbe qualcosa di simile:
My-Function "some string" -Switch1 -Switch2 -Switch3
tuttavia, voglio fare funzionare questa funzione solo se la stringa e almeno un interruttore è fornito. così: così:
My-Function "some string" -Switch1 -Switch3 # Valid My-Function "some string" -Switch2 # Valid My-Function "some string" # Invalid
so che potrei farlo controllando se gli switch sono stati passati usando l'oggetto $MyInvocation
, ma c'è un modo per farlo usando gli attributi Parameter
e ParameterSet
?
in breve, questo è quello che sto cercando di fare:
- la stringa deve essere fornita ogni volta che la funzione è chiamata.
- almeno un interruttore deve essere fornito ogni volta che la funzione è chiamata.
En title : How do I force at least one parameter from a set be specified?
sì, il parametro è obbligatorio quando si definisce così:
-Switch1
,-Switch2
e-Switch3
sia presente. rendere obbligatorio un parametro impone la presenza di questo esatto interruttore ogni volta che la funzione viene chiamata.non credo che si possa fare questo con i set di parametri e parametri obbligatori. se hai definito 3 diversi set di parametri con parametro obbligatorio alternato come questo:
funziona se si utilizza solo uno degli interruttori:
ma non riesce se si utilizza più di un interruttore:
userei invece un parametro obbligatorio impostato:
ciò permetterebbe di chiamare la funzione come questa:
oppure puoi rendere tutti e tre gli switch opzionali e validarli all'interno della funzione:
i parametri dinamici potrebbero essere un'altra opzione, ma non posso dirlo per certo.