Parametri dinamici cmdletCmdlet dynamic parameters

I cmdlet possono definire parametri disponibili per l'utente in condizioni speciali, ad esempio quando l'argomento di un altro parametro è un valore specifico.Cmdlets can define parameters that are available to the user under special conditions, such as when the argument of another parameter is a specific value. Questi parametri vengono aggiunti in fase di esecuzione e vengono definiti parametri dinamici perché vengono aggiunti solo quando necessario.These parameters are added at runtime and are referred to as dynamic parameters because they're only added when needed. È ad esempio possibile progettare un cmdlet che aggiunge diversi parametri solo quando viene specificato un parametro di opzione specifico.For example, you can design a cmdlet that adds several parameters only when a specific switch parameter is specified.

Nota

I provider e le funzioni di PowerShell possono anche definire parametri dinamici.Providers and PowerShell functions can also define dynamic parameters.

Parametri dinamici nei cmdlet di PowerShellDynamic parameters in PowerShell cmdlets

PowerShell usa parametri dinamici in diversi cmdlet del provider.PowerShell uses dynamic parameters in several of its provider cmdlets. Ad esempio, i Get-Item Get-ChildItem cmdlet e aggiungono un parametro CodeSigningCert in fase di esecuzione quando il parametro path specifica il percorso del provider di certificati .For example, the Get-Item and Get-ChildItem cmdlets add a CodeSigningCert parameter at runtime when the Path parameter specifies the Certificate provider path. Se il parametro path specifica un percorso per un provider diverso, il parametro CodeSigningCert non è disponibile.If the Path parameter specifies a path for a different provider, the CodeSigningCert parameter isn't available.

Negli esempi seguenti viene illustrato il modo in cui il parametro CodeSigningCert viene aggiunto in fase di esecuzione quando Get-Item viene eseguito.The following examples show how the CodeSigningCert parameter is added at runtime when Get-Item is run.

In questo esempio, il runtime di PowerShell ha aggiunto il parametro e il cmdlet ha esito positivo.In this example, the PowerShell runtime has added the parameter and the cmdlet is successful.

Get-Item -Path cert:\CurrentUser -CodeSigningCert
Location   : CurrentUser
StoreNames : {SmartCardRoot, UserDS, AuthRoot, CA...}

In questo esempio viene specificata un'unità filesystem e viene restituito un errore.In this example, a FileSystem drive is specified and an error is returned. Il messaggio di errore indica che il parametro CodeSigningCert non è stato trovato.The error message indicates that the CodeSigningCert parameter can't be found.

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

Supporto per parametri dinamiciSupport for dynamic parameters

Per supportare i parametri dinamici, è necessario includere nel codice del cmdlet gli elementi seguenti.To support dynamic parameters, the following elements must be included in the cmdlet code.

InterfacciaInterface

System. Management. Automation. IDynamicParameters.System.Management.Automation.IDynamicParameters. Questa interfaccia fornisce il metodo che recupera i parametri dinamici.This interface provides the method that retrieves the dynamic parameters.

Ad esempio:For example:

public class SendGreetingCommand : Cmdlet, IDynamicParameters

MetodoMethod

System. Management. Automation. IDynamicParameters. GetDynamicParameters.System.Management.Automation.IDynamicParameters.GetDynamicParameters. Questo metodo recupera l'oggetto che contiene le definizioni dei parametri dinamici.This method retrieves the object that contains the dynamic parameter definitions.

Ad esempio:For example:

 public object GetDynamicParameters()
 {
   if (employee)
   {
     context= new SendGreetingCommandDynamicParameters();
     return context;
   }
   return null;
}
private SendGreetingCommandDynamicParameters context;

ClasseClass

Classe che definisce i parametri dinamici da aggiungere.A class that defines the dynamic parameters to be added. Questa classe deve includere un attributo di parametro per ogni parametro e gli eventuali attributi facoltativi di convalida e alias richiesti dal cmdlet.This class must include a Parameter attribute for each parameter and any optional Alias and Validation attributes that are needed by the cmdlet.

Ad esempio:For example:

public class SendGreetingCommandDynamicParameters
{
  [Parameter]
  [ValidateSet ("Marketing", "Sales", "Development")]
  public string Department
  {
    get { return department; }
    set { department = value; }
  }
  private string department;
}

Per un esempio completo di un cmdlet che supporta i parametri dinamici, vedere come dichiarare i parametri dinamici.For a complete example of a cmdlet that supports dynamic parameters, see How to Declare Dynamic Parameters.

Vedere ancheSee also

System. Management. Automation. IDynamicParametersSystem.Management.Automation.IDynamicParameters

System. Management. Automation. IDynamicParameters. GetDynamicParametersSystem.Management.Automation.IDynamicParameters.GetDynamicParameters

Come dichiarare i parametri dinamiciHow to Declare Dynamic Parameters

Scrittura di un cmdlet di Windows PowerShellWriting a Windows PowerShell Cmdlet