Comment marquer un paramètre de commutateur comme obligatoires dans Powershell
Je suis sûr que je n'ai pas d'autres options que ce que j'ai découvert, mais j'ai voulu choisir le collectif internet cerveau.
Je préfère utiliser un [switch] paramètre lors du passage de valeurs booléennes les fonctions personnalisées. Cependant, j'ai quelques affaires dans lesquelles j'ai voulu marquer le paramètre de commutateur comme obligatoire. Ceci peut être accompli grâce à [parameter(Mandatory = $true)] sur le paramètre. Cependant, je n'aime vraiment pas l'INTERFACE utilisateur de l'invite qui s'affiche. Je préfère de beaucoup la levée d'une exception.
Mais, un commutateur peut être vrai ou faux, et le "IsPresent" le bien ne fait pas de distinction. Si je passe un paramètre de commutateur comme -exemple:$false, le passage des rapports qui $exemple.IsPresent est faux!
J'ai recours à l'aide d'un [bool]. Par exemple:
param
(
[bool]$theValue = $(throw('You didn't specify the value!'))
);
Y a d'autres trucs que je peux tirer?
example
et exampleOff
. Puis, lorsque ni IsPresent
jeter une erreur.
OriginalL'auteur Johnny Kauffman | 2011-08-29
Vous devez vous connecter pour publier un commentaire.
Dans un façon une
switch
paramètre est toujours obligatoire. Si vous ne spécifiez pas, elle obtient une valeur false. Si vous spécifiez (-var
) on obtient une valeur true et si vous spécifiez une valeur trop (-var:$false
), on arrive à la valeur spécifiée.Je ne peux pas vraiment penser à une situation où il est obligatoire de spécifier un interrupteur. Si vous ne spécifiez pas, c'est faux. Simple que cela.
Je pense que ce que vous voulez, c'est précisément pour parler de la valeur du param être vrai ou faux? Si c'est le cas, le
bool
version que vous mentionnez est ce que je voudrais aller, si elle fonctionne de la même façon avecswitch
trop:Et également en ce qui concerne
$example.IsPresent
- je sais que c'est pas intuitif /cassé , mais c'est la même que la valeur de la variable switch lui-même. C'est ainsi que le constructeur deSwitch Paramater
est défini et la seule propriété qu'il possède, c'est laIsPresent
:http://msdn.microsoft.com/en-us/library/system.management.automation.switchparameter.ctor%28v=vs.85%29.aspx
Oups! J'ai eu tort de conclure que jeter de l'erreur lors de l'utilisation de "Basculer" dans la liste des paramètres ne fonctionnerait pas. J'ai essayé cette fois, et il semble bon pour aller. manojlds la réponse est à la fois précis et très bien détaillé.
-var:$false était ce que je cherchais. Merci!
OriginalL'auteur manojlds