En PowerShell 1.0, si tengo un parámetro de cmdlet de tipo enum, ¿cuál es el método recomendado para probar si el usuario especificó ese parámetro en la línea de comandos del cmdlet? Por ejemplo:¿Cómo puedo determinar si se especificó un valor del parámetro Cmdlet de PowerShell?
MyEnum : int { No = 0, Yes = 1, MaybeSo = 2 }
class DoSomethingCommand : PSCmdlet
...
private MyEnum isEnabled;
[Parameter(Mandatory = false)]
public MyEnum IsEnabled
{
get { return isEnabled; }
set { isEnabled = value; }
}
protected override void ProcessRecord()
{
// How do I know if the user passed -IsEnabled <value> to the cmdlet?
}
¿Hay alguna manera de hacer esto sin tener que sembrar isEnabled con un valor ficticio? Por defecto, será igual a 0, y no quiero tener que sembrar cada parámetro ni agregar un valor ficticio a mi enumeración. Tengo potencialmente muchos cmdlets con cientos de parámetros, tiene que haber una mejor manera. Esto está relacionado con this question pero estaba buscando una forma más limpia de hacerlo. Gracias.
@Jack paja Si ha "potencialmente tiene muchos cmdlets con 100 de los parámetros", es posible que desee mirar a romper algo de esa funcionalidad para arriba. Uno de los beneficios clave de PowerShell es la capacidad de descubrimiento y tener un gran número de parámetros hace que el autodescubrimiento sea mucho más difícil. –
@Steven, lo siento, puede haber sido engañoso; no es que cada cmdlet tenga 100 de params :), sino muchos cmdlets que dan como resultado muchos parámetros. Gracias por tu comentario. –