Parámetros dinámicos del cmdlet
Los cmdlets pueden definir parámetros que están disponibles para el usuario en condiciones especiales, como cuando el argumento de otro parámetro es un valor específico. Estos parámetros se agregan en tiempo de ejecución y se conocen como parámetros dinámicos porque solo se agregan cuando es necesario. Por ejemplo, puede diseñar un cmdlet que agrega varios parámetros solo cuando se especifica un parámetro switch específico.
Nota
Los proveedores y las funciones de PowerShell también pueden definir parámetros dinámicos.
Parámetros dinámicos en cmdlets de PowerShell
PowerShell usa parámetros dinámicos en varios de sus cmdlets de proveedor. Por ejemplo, los cmdlets y agregan un Get-Item
Get-ChildItem
parámetro CodeSigningCert en tiempo de ejecución cuando el parámetro Path especifica la ruta de acceso del proveedor de certificados. Si el parámetro Path especifica una ruta de acceso para otro proveedor, el parámetro CodeSigningCert no está disponible.
En los ejemplos siguientes se muestra cómo se agrega el parámetro CodeSigningCert en tiempo de ejecución cuando Get-Item
se ejecuta .
En este ejemplo, el tiempo de ejecución de PowerShell ha agregado el parámetro y el cmdlet es correcto.
Get-Item -Path cert:\CurrentUser -CodeSigningCert
Location : CurrentUser
StoreNames : {SmartCardRoot, UserDS, AuthRoot, CA...}
En este ejemplo, se especifica una unidad FileSystem y se devuelve un error. El mensaje de error indica que no se encuentra el parámetro CodeSigningCert.
Get-Item -Path C:\ -CodeSigningCert
Get-Item : A parameter cannot be found that matches parameter name 'codesigningcert'.
At line:1 char:37
+ get-item -path C:\ -codesigningcert <<<<
--------
CategoryInfo : InvalidArgument: (:) [Get-Item], ParameterBindingException
FullyQualifiedErrorId : NamedParameterNotFound,Microsoft.PowerShell.Commands.GetItemCommand
Compatibilidad con parámetros dinámicos
Para admitir parámetros dinámicos, se deben incluir los siguientes elementos en el código del cmdlet.
Interfaz
System.Management.Automation.IDynamicParameters. Esta interfaz proporciona el método que recupera los parámetros dinámicos.
Por ejemplo:
public class SendGreetingCommand : Cmdlet, IDynamicParameters
Método
System.Management.Automation.IDynamicParameters.GetDynamicParameters. Este método recupera el objeto que contiene las definiciones de parámetros dinámicos.
Por ejemplo:
public object GetDynamicParameters()
{
if (employee)
{
context= new SendGreetingCommandDynamicParameters();
return context;
}
return null;
}
private SendGreetingCommandDynamicParameters context;
Clase
Clase que define los parámetros dinámicos que se van a agregar. Esta clase debe incluir un atributo Parameter para cada parámetro y cualquier atributo Alias y Validation opcional que necesite el cmdlet.
Por ejemplo:
public class SendGreetingCommandDynamicParameters
{
[Parameter]
[ValidateSet ("Marketing", "Sales", "Development")]
public string Department
{
get { return department; }
set { department = value; }
}
private string department;
}
Para obtener un ejemplo completo de un cmdlet que admite parámetros dinámicos, vea Cómo declarar parámetros dinámicos.
Consulte también
System.Management.Automation.IDynamicParameters
System.Management.Automation.IDynamicParameters.GetDynamicParameters