Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
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 agregue varios parámetros solo cuando se especifica un parámetro de modificador 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 Get-Item
y Get-ChildItem
agregan un parámetro CodeSigningCert en tiempo de ejecución cuando el parámetro Path de especifica la ruta de acceso del proveedor de Certificate. Si el parámetro Path de especifica una ruta de acceso para un proveedor diferente, 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 se ejecuta Get-Item
.
En este ejemplo, el entorno de ejecución de PowerShell ha agregado el parámetro y el cmdlet se realiza correctamente.
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, los siguientes elementos deben incluirse 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 opcional Alias y Validation atributos necesarios por 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, consulte Cómo declarar parámetros dinámicos.
Consulte también
- System.Management.Automation.IDynamicParameters
- System.Management.Automation.IDynamicParameters.GetDynamicParameters
- cómo declarar parámetros dinámicos
- escribir un cmdlet de Windows PowerShell